Strengths would be determination, ambition, creative and dedicated. I love building things slightly out of my current range of competence because I love the feeling of working on difficult challenges and finishing them. I like to push myself to go outside my normal boundaries and accomplish what I thought was impossible a week, a month, or a year before finishing that project. So, I'm constantly chasing something bigger, something brighter, something greater every single day. I'm always trying to improve myself and be the best I can be. I think this will really help me thrive when learning.
I think a limitation for me is the difficulty to ask questions. I'm naturally shy and think I can solve any problems on my own. Not always the case. I usually stumble upon something I can't do, and find it is way beyond my control and me not being able to ask for help, really sets me back and restricts my true potential.
I value those close to me more than anything. Growing up with a large family and being the youngest of seven has had its advantages I suppose. I was spoilt rotten by all my five older sisters and older bro. They treated me like I was their baby and got almost anything I wanted, not that I asked for anything. The only disadvantage was that as I grew older I used to hate being smothered in kisses and cuddles by them especially when they would drop me off at school. I was brought up by my mum and she always taught us the importance of respect and keeping Whanau close. I grew up around my nephews and nieces living with us all the time which sometimes felt like a marae in our house at times with mattresses everywhere.
My Mum and Dad are both of Maori decent and I have been to numerous whanau reunions back up the East Coast where I have met many of my extended whanau whom attended these events. These times had taught me about the importance of Whanau and shown me where my tipuna (ancestors) grew up and the importance of tikanga (customs and traditional values). It was here we were taught about the importance of different aspects of our culture, in particular our whakapapa (genealogy) and the traditional protocols surrounding being on a Marae (Meeting House). How to act when on or around the Urupa (burial site). We also learnt about how our tipuna gathered kai (food).


Some time ago we asked for your input, whether you were a seasoned {{ app }} user or just peeking around the corner, and WOW, did you deliver! After reading each and everyone of your replies on the survey, we have taken each piece of praise and criticism to heart to scope out our plans for {{ app }}. All feedback will be used to make your favorite theme that much better, but these were some of the highlights.
A whopping 72% of you said you were ready for a fresh new design, while {{ app }} is and a revolutionary view on what a good bootstrap based template should be, having something new to look at can make anyone feel invigorated. And let's be honest, who doesn't like a modern update of your favorite theme! While most you are still happy with the current variations, around 50% of you have asked for vue.js support. With this framework rapidly gaining popularity it is surely one to include in the family of frameworks! And, last, but certainly not least, a very large majority of a staggering 90% wanted more plugins and regular updates.
SmartAdmin takes great care to ensure that valuable and popular plugins are supported as much as possible on a drop-in basis, meaning without doing heavy modifications to extend the look and feel of your favorite admin template :) . And if the plugin is in demand enough, we won't hesitate to put in the hours to support the look and feel of {{ app }}.
But how you ask? Well in order to make the next version of {{ app }} the best ever and to re-deliver on our promise of continued support and quality, we wrote the theme from the ground-up using the latest Bootstrap practises. As a result we are better able to support new frameworks as they come up and ensure that plugin support is quick and reliable. In addition we have partnered up with some of the communities best developers to ensure that our tailor made variations are of top-notch quality and follow the principles that we at {{ app }} take to heart.
We're really confident that {{ app }} 4.0 will bring back that first theme experience while still keeping the familiarity that you have grown used to. It's a brand new theme, but with all the things you love and then some. And to ensure that you our loyal customers get this experience first-hand, we will be publishing the HTML update free-of-charge as an update to your current {{ app }} license!
Last but not least, we would like to thank each and everyone of you, our loyal customers, for your patience and continued support in {{ app }}. Without you this would not have been possible!
Sincerely,
The {{ app }} Team


Works on any blockchain with a web-accessible API and tested on Bitcoin, Litecoin Dogecoin, and Dash
Learn MorePrevents vendor lock-in and is compatible with a range of blockchain APIs ensuring you will always have access
Learn MoreMuch like WordPress, our framework can be extended with additional modules to support themes and plugins
Learn MorePrivate keys are generated deterministically in the browser and never leave localStorage
Learn MoreCreate and control multiple accounts for multiple cryptocurrencies
Learn MoreAll of our code is available to view, fork, and contribute to via our GitHub repository
Learn More


Message is required.
Message must be minimum 3 characters long.
Message should be maximum 1024 characters long.
Only Alphanumeric, spaces, underscores, dots, commas and dashes allowed
The message field is only to be appended to or corrected in liaison with the requesting User.


Recipe 11.18. Building a Python Cocoa GUI ProgrammaticallyProblemYou are developing a Python application using Mac OS X's Aqua interface (through Apple's Cocoa toolkit and the PyObjC, Python/Objective-C bridge). You want to build the application's user interface within the program itself (as is normally done in most other Python GUI toolkits), rather than via Apple's Interface Builder (IB) and resulting .nib files (as is usually done with Cocoa for Aqua applications). SolutionAnything that you can do via Interface Builder and .nib files, you can also do directly in your program. Here is a simple demo: from math import sin, cos, pi from Foundation import * from AppKit import * class DemoView(NSView): n = 10 def X(self, t): return (sin(t) + 1) * self.width * 0.5 def Y(self, t): return (cos(t) + 1) * self.height * 0.5 def drawRect_(self, rect): self.width = self.bounds( )[1][0] self.height = self.bounds( )[1][1] NSColor.whiteColor( ).set( ) NSRectFill(self.bounds( )) NSColor.blackColor( ).set( ) step = 2 * pi/self.n loop = [i * step for i in range(self.n)] for f in loop: p1 = NSMakePoint(self.X(f), self.Y(f)) for g in loop: p2 = NSMakePoint(self.X(g), self.Y(g)) NSBezierPath.strokeLineFromPoint_toPoint_(p1, p2) class AppDelegate(NSObject): def windowWillClose_(self, notification): app.terminate_(self) def main( ): global app app = NSApplication.sharedApplication( ) graphicsRect = NSMakeRect(100.0, 350.0, 450.0, 400.0) myWindow = NSWindow.alloc( ).initWithContentRect_styleMask_backing_defer_( graphicsRect, NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask | NSMiniaturizableWindowMask, NSBackingStoreBuffered, False) myWindow.setTitle_('Tiny Application Window') myView = DemoView.alloc( ).initWithFrame_(graphicsRect) myWindow.setContentView_(myView) myDelegate = AppDelegate.alloc( ).init( ) myWindow.setDelegate_(myDelegate) myWindow.display( ) myWindow.orderFrontRegardless( ) app.run( ) print 'Done' if _ _name_ _ == '_ _main_ _': main( ) DiscussionMost programmers prefer to lay out their programs' user interfaces graphically, and Apple's Interface Builder application, which comes with Apple's free Developer Tools (also known as XCode), is a particularly nice tool for this task (when you're using Apple's Cocoa toolkit to develop a GUI for Mac OS X's Aqua interface). (The PyObjC extension makes using Cocoa from Python an obvious choice, if you're developing applications for the Macintosh.) Sometimes it is more convenient to keep all the GUI building within the very program I'm developing, at least at first. During the early iterations of developing a new program, I often need to refactor everything drastically as I rethink the problem space. When that happens, trying to find all the connections that have to be modified or renamed is a chore in Interface Builder or in any other such interactive GUI-painting application. Some popular GUI toolkits, such as Tkinter, are based on the idea that the program builds its own GUI at startup by defining the needed objects and appropriately calling functions and methods. It may not be entirely clear to users of other toolkits, such as Cocoa, that just about every toolkit is capable of operating in a similar manner, allowing "programmatic" GUI construction. This applies even to those toolkits that are most often used by means of interactive GUI-painting applications. By delaying the use of IB until your program is more functional and stable, it's more likely that you'll be able to design an appropriate interface. This recipe can help get you started in that direction. This recipe's code is a straight port of tiny.m, from Simson Garfinkel and Michael Mahoney, Building Cocoa Applications: A Step-by-Step Guide (O'Reilly), showing how to build a Cocoa application without using Interface Builder nor loading .nib files. This recipe was my first PyObjC project, and it is indebted both to the Cocoa book and to PyObjC's "Hello World" example code. Starting from this simple, almost toy-level recipe, I was able to use Python's file handling to easily build a graphical quote viewer and ramp up from there to building rich, full-fledged GUIs. See AlsoGarfinkel and Mahoney's Building Cocoa Applications: A Step-by-Step Guide (O'Reilly); PyObjC is at http://pyobjc.sourceforge.net/. |


|
Attribute
|
Description
|
Type
|
Requirement
|
|
arch
|
Sets cpu architecture, compiler may use cpu specific instructions.
|
"i386", "i486", "i586", "i686", "pentium", "pentium-mmx", "pentiumpro", "pentium2", "pentium3", "pentium4", "k6", "k6-2", "k6-3", "athlon", "athlon-tbird", "athlon-4", "athlon-xp", "athlon-mp", "winchip-c6", "winchip2", "c3"
|
Optional
|
|
cpu
|
Sets preferred cpu, but does not use cpu specific instructions.
|
"i386", "i486", "i586", "i686", "pentium", "pentium-mmx", "pentiumpro", "pentium2", "pentium3", "pentium4", "k6", "k6-2", "k6-3", "athlon", "athlon-tbird", "athlon-4", "athlon-xp", "athlon-mp", "winchip-c6", "winchip2", "c3"
|
|
description
|
Sets a description of the current data type.
|
String
|
|
id
|
Sets an id that can be used to reference this element.
|
String
|
|
if
|
Sets the property name for the 'if' condition. The define will be ignored unless the property is defined. The value of the property is insignificant, but values that would imply misinterpretation ("false", "no") will throw an exception when evaluated.
|
String
|
|
osfamily
|
Sets operating system family.
|
"windows", "dos", "mac", "unix", "netware", "os/2", "tandem", "win9x", "z/os", "os/400", "openvms"
|
|
refid
|
Specifies that this element should behave as if the content of the element with the matching id attribute was inserted at this location. If specified, no other attributes should be specified.
|
Reference
|
|
unless
|
Set the property name for the 'unless' condition. If named property is set, the define will be ignored. The value of the property is insignificant, but values that would imply misinterpretation ("false", "no") of the behavior will throw an exception when evaluated.
|
String
|
|


Initial State:
You can set the initial state of the application through url query parameters. The supported query parameters are:
- users: Number of users. Up to 10. Default 10
- glucagon: Glucagon state. True of False. Default False.
- carbs: Carb state. Index of carb state ['hidden', 'announcement', 'full']. Default 0 i.e. hidden.
- speed: Update speed. In milliseconds 100-10,000. Default 1000 ms.
- fullscreen: Set detail to profile view. Default false.
example /list?users=4&glucagon=true& carbs=1.
Shortcuts:
- a: Toggle alert.
- f: Toggle detail to profile view.
- esc: Close overlay.
- g: Toggle Glucagon state.
- c: Toggle Carb State: ['`hidden', 'announcement', 'full'].
- h: Toggle usage.
- l: Randomize signal pump and battery levels.
- 1: 100 ms update speed.
- 2: 500 ms update speed.
- 3: 1 s update speed.
- 4: 3 s update speed.
Tips:
- User profile sections are dragabble.
- Resize the window horizontally up and down.
- (CMD+ -) and (CMD+ +) to zoom in and out to show how the site handles big screens.
Shortcuts. Press h.


/**
* There are multiple kinds of tokens in the Facebook API.
*
* To post on pages, you need to get an app token first,
* followed by a user access token with the manage_pages and publish_pages permissions,
* then a token for page access.
*
* In the end, I got a short-term page access token, then extended its life to 2 months using this tutorial: https://dev.to/daviducolo/permanent-facebook-page-access-token-3epi
* See: https://developers.facebook.com/docs/pages/getting-started
*
* For now, the page access token is hardcoded into this file, but in a proper project it should be read from a text file for extensibility.
*
* Anyway, this code should do very basic stuff: it should just get the latest incident report from the call operator interface
* and parse it into a facebook post to be posted.
*
* Tl;dr: this script alone is good enough for posting on Facebook for at least 2 months until May 2019.
*/
// modules and libraries
const request = require('request'),
path = require('path');
/**
* Post something on the page. If the post is successful, resolve the new Promise created, and if it is unsuccessful, reject it.
* @param {string} pageId pageId of the page to post to
* @param {string} postMessage the message to be posted
* @param {string} pageAccessToken the page access token required to authenticate the request with Facebook API.
*
* @returns {number} a Promise.
* */
function postOnPage(pageId, postMessage, pageAccessToken) {
return new Promise((resolve, reject) => {
var options = {
url: `https://graph.facebook.com/${pageId}/feed?message=${postMessage}`,
headers: {
'Authorization': 'Bearer' + ' ' + `${pageAccessToken}`
}
};
request.post(options).on('response', function(response) {
if (response.statusCode == 200)
resolve(response.statusCode);
else
reject(response.statusCode);
});
});
}
module.exports = {postOnPage};


| Platform | Download link |
| Android (Rooted) and Amazon Kindle | APK |
We have noticed that you are using a mobile device. The performance of Glyphoid browser edition on mobile devices is still being fine-tuned. For best experience, you can either visit the browser edition from a desktop computer or use our mobile editions.
Thank you!
(C) 2015 Shanqing Cai


ASButtonNode Class Reference
| Inherits from | ASControlNode : ASDisplayNode : ASDealloc2MainObject |
|---|---|
| Declared in | ASButtonNode.h |
contentSpacing
Spacing between image and title. Defaults to 8.0.
@property (nonatomic, assign) CGFloat contentSpacing
Declared In
ASButtonNode.h
laysOutHorizontally
Whether button should be laid out vertically (image on top of text) or horizontally (image to the left of text). ASButton node does not yet support RTL but it should be fairly easy to implement. Defaults to YES.
@property (nonatomic, assign) BOOL laysOutHorizontally
Declared In
ASButtonNode.h
contentHorizontalAlignment
Horizontally align content (text or image). Defaults to ASHorizontalAlignmentMiddle.
@property (nonatomic, assign) ASHorizontalAlignment contentHorizontalAlignment
Declared In
ASButtonNode.h
contentVerticalAlignment
Vertically align content (text or image). Defaults to ASVerticalAlignmentCenter.
@property (nonatomic, assign) ASVerticalAlignment contentVerticalAlignment
Declared In
ASButtonNode.h
contentEdgeInsets
The insets used around the title and image node
@property (nonatomic, assign) UIEdgeInsets contentEdgeInsets
Discussion
The insets used around the title and image node
Declared In
ASButtonNode.h
imageAlignment
@discusstion Whether the image should be aligned at the beginning or at the end of node. Default is ASButtonNodeImageAlignmentBeginning
.
@property (nonatomic, assign) ASButtonNodeImageAlignment imageAlignment
Declared In
ASButtonNode.h
– attributedTitleForState:
Returns the styled title associated with the specified state.
- (NSAttributedString *_Nullable)attributedTitleForState:(ASControlState)state
Parameters
state |
The state that uses the styled title. The possible values are described in ASControlState. |
|---|
Return Value
The title for the specified state.
Declared In
ASButtonNode.h
– setAttributedTitle:forState:
Sets the styled title to use for the specified state. This will reset styled title previously set with -setTitle:withFont:withColor:forState.
- (void)setAttributedTitle:(nullable NSAttributedString *)title forState:(ASControlState)state
Parameters
title |
The styled text string to use for the title. |
|---|---|
state |
The state that uses the specified title. The possible values are described in ASControlState. |
Declared In
ASButtonNode.h
– setTitle:withFont:withColor:forState:
Sets the title to use for the specified state. This will reset styled title previously set with -setAttributedTitle:forState.
- (void)setTitle:(NSString *)title withFont:(nullable UIFont *)font withColor:(nullable UIColor *)color forState:(ASControlState)state
Parameters
title |
The styled text string to use for the title. |
|---|---|
font |
The font to use for the title. |
color |
The color to use for the title. |
state |
The state that uses the specified title. The possible values are described in ASControlState. |
Declared In
ASButtonNode.h
– imageForState:
Returns the image used for a button state.
- (nullable UIImage *)imageForState:(ASControlState)state
Parameters
state |
The state that uses the image. Possible values are described in ASControlState. |
|---|
Return Value
The image used for the specified state.
Declared In
ASButtonNode.h
– setImage:forState:
Sets the image to use for the specified state.
- (void)setImage:(nullable UIImage *)image forState:(ASControlState)state
Parameters
image |
The image to use for the specified state. |
|---|---|
state |
The state that uses the specified title. The values are described in ASControlState. |
Declared In
ASButtonNode.h
– setBackgroundImage:forState:
Sets the background image to use for the specified state.
- (void)setBackgroundImage:(nullable UIImage *)image forState:(ASControlState)state
Parameters
image |
The image to use for the specified state. |
|---|---|
state |
The state that uses the specified title. The values are described in ASControlState. |
Declared In
ASButtonNode.h
– backgroundImageForState:
Returns the background image used for a button state.
- (nullable UIImage *)backgroundImageForState:(ASControlState)state
Parameters
state |
The state that uses the image. Possible values are described in ASControlState. |
|---|
Return Value
The background image used for the specified state.
Declared In
ASButtonNode.h


§109-4 Employee benefits. All full-time employees of the authority shall be entitled to any benefit program generally applicable to the officers and employees of the State. [L 1975, c 172, §3]


Implementation Options and Specification for Shadow Compilation
This document describes three implementation options for providing and maintaining gcc support in ON. We've selected shadow compilation as the most cost-effective option. This option is described in detail, along with its costs and benefits.
Copyright 2006 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
ident "@(#)d-compilers-impl.txt 1.1 06/03/06 SMI"
OpenSolaris
SUPPORTED COMPILER POLICY, V1 [DRAFT 2]: IMPLEMENTATION ADDENDUM
1. Summary
This addendum to the OpenSolaris Supported Compiler Policy describes
three possible tools implementations which would satisfy the
requirements established by that policy[0]. The three approaches are a
modification to the compiler wrapper, a complete second build within the
same workspace, and the use of entirely distinct workspaces for each
compiler. Estimated costs are provided for each.
Regardless of which solution is ultimately selected, the Tonic team
will be responsible for implementation, initial testing, and integration
of that solution into ON.
2. Shadow Compilation
Shadow compilation is implemented as a modification to the compiler
wrapper (cw). The concept of primary and shadow compilers is
introduced; the primary compiler is specified by one of the -_cc, -_gcc,
-_CC, or -_g++ options and produces the binary objects, preprocessor
files, and other build products as in the existing cw implementation.
The compiler complementary to the primary compiler which accepts the
same input language(s) is defined to be the shadow compiler. The shadow
compiler will be invoked in parallel with the primary compiler, with the
following modifications and exceptions:
(a). If CW_NO_SHADOW is present in the environment, cw will
invoke only the specified primary compiler.
(b). If the command line given to cw includes '-o ' or
'-o', is replaced by a temporary file on the command line
given to the shadow compiler. Otherwise, a -o option is added, along
with a temporary filename, to the shadow compiler's command line. In
either case, this temporary file is unlinked by cw after the shadow
compiler terminates.
(c). If the command line given to cw does not include one of
'-c', '-S', '-P', or '-E', the shadow compiler is not invoked. That is,
no attempt is made to link previously compiled objects into a library or
executable.
(d). All instances of environment variables whose names begin
with 'SUNPRO_DEPEND' are removed prior to execution of the shadow
compiler. This prevents corruption of make's dependency tracking files
by the shadow compiler.
(e). The command line for the shadow compiler is otherwise
translated as it would be if the shadow compiler were the primary
compiler.
Standard output and standard error for both the primary and shadow
compiler, if invoked, are left unchanged by cw, so that warnings and
errors for both are displayed to the user or logged, as appropriate. cw
terminates only after both the primary and shadow compiler, if invoked,
have terminated. cw's exit status will be 0 if both primary and shadow
compilers, if invoked, exit with status 0, or nonzero otherwise.
2.1. Build Time Cost
2.1.1. Testing Methodology
The same 2 machines were used for all tests, and the same system
software was used for all tests.
"Standard cc" and "Standard gcc" results are taken from the 3
February automatic nightly builds of /net/tonic-gate/tonic/gcc-gate
using the default Studio compiler and gcc 3.4.3 from /usr/sfw,
respectively. Nightly environment files used for these four builds can
be found at /net/tonic-gate/tonic/gcc-gate/public/env/.
"Combined-cw" results are taken from nightly builds run on 2
February ("cc") and 3 February ("no shadow") using the default Studio
compiler (and gcc 3.4.3 from /usr/sfw, if shadow compilation is
enabled). Nightly environment files used for these four builds can be
found at /home/wesolows/env/gcc.{x86,sparc}. The only difference
between the "cc" and "no shadow" builds is the existence of the
CW_NO_SHADOW environment variable for the "no shadow" build, which
causes cw to fall back to its traditional behaviour by invoking only the
primary compiler. One would expect these times to be nearly identical
to "Standard cc" times.
Differences between the built workspaces were no greater than one
day's putbacks; the "Standard" workspaces are sync'd with gcc-gate
daily, while the "Combined-cw" workspaces were sync'd on 1 February
only.
Both machines were otherwise idle during all builds.
"user+sys" times include both DEBUG and non-DEBUG time. The reason
for including this will be made clear in the discussion.
2.1.2.  Discussion
This comparison offers strong evidence that the tax associated with
shadow compilation is, surprisingly, quite small indeed and in some
build environments may even be in the noise. A reasonable
interpretation holds that since the shadow compilation occurs in
parallel with primary compilation, total build times will be less
affected by it on machines with many otherwise idle slower CPUs (where
build time is governed mainly by serialized java compilation, not C
compilation) than on machines which are fully utilized or have fewer,
faster CPUs. The shadow compilation tax would therefore be at a maximum
on a uniprocessor system; we can arrive at a reasonable worst-case
estimate of this tax on a uniprocessor build system by using the
user+sys times.
SPARC systems with 2 or fewer CPUs are rarely used to build ON; all
SPARC public build machines for ON Nevada have at least 6 cores; most
have 12 or more. Therefore, real-world tax rates for shadow gcc
compilation are likely to range between 0 and 0.35 against 0.40 to 0.66
for lint. Like lint, shadow gcc can be enabled and disabled easily in a
nightly(1) configuration, can be run selectively within each subtree
from the command line, and does not interfere with incremental builds.
Unlike lint, shadow gcc requires zero additional disk space for each
build and does not require project teams to introduce or use additional
makefile macros or targets.
2.2. Disk Space Costs
Because the shadow compiler's additional output is immediately
discarded, the marginal disk space requirement for this implementation
is negligible.
2.3. Active Engineer Time Costs
Shadow compilation is fully automatic and requires no configuration
or additional manual activity. The only active engineering cost
associated with this solution is applicable to all three solutions: time
spent diagnosing and correcting errors or warnings triggered by the
secondary compiler. This time is expected to vary greatly from project
to project.
2.4. Risks and Drawbacks
The most significant drawback to this approach is that linking is
never done by the shadow compiler or on its products. This affects a
number of commands built from a single source file; there would be no
automated way to ensure that these remain gcc-clean. It may in some
cases be possible to avoid this problem by executing the shadow compiler
for linking when it is known that the compiler writes only to the
designated output file or safely-named temporary files.
3. Second Internal Build
This approach is similar to the Export Source Product build in that
it creates a second source tree within the same build workspace. That
second tree is then built with the secondary compiler. This approach
produces a set of build products for each compiler that can be installed
and tested. This approach requires no changes to any tools except
nightly. When given the 'g' option, nightly creates and builds the
secondary workspace. This workspace is built in both DEBUG and
non-DEBUG variants if nightly is so configured.
3.1. Build Time Costs
On a 4-way Opteron, a full DEBUG+non-DEBUG build was measured at
2:51:36 wall time without the secondary compiler and 4:35:07 with it.
The time cost is therefore slightly higher than that of shadow
compilation. We expect that the cost in other build environments would
be similar as the time required to perform builds with gcc is
well-known.
3.2. Disk Space Costs
This method requires a full copy of the source and binary products
and therefore has a hefty cost in space. Measurements on x86 indicate
that secondary compilation adds about 3.0 GB to each full build on x86,
or almost 100% of the primary-compiler-only space requirement. We would
expect SPARC costs to be slightly higher in absolute terms and similar
relative to the size of a primary-compiler-only build.
3.3. Active Engineer Time Costs
This solution is automatic and requires only that engineers add a
single flag to their nightly environment files. Engineers performing
manual builds with dmake will have to find an alternate means of
verifying that their code is acceptable to the secondary compiler, such
as performing a second manual build or using nightly before putback.
Otherwise, this solution requires only that engineers identify,
diagnose, and correct any warnings or errors generated during the
secondary build.
3.4. Risks and Drawbacks
This solution is considerably safer than shadow compilation; it does
not alter the semantics of the compiler wrapper and make it much less
likely that objects may be accidentally overwritten. It also builds all
binaries and thus offers more complete coverage. The main drawback to
this approach is massive disk space consumption; a lesser unfortunate
side effect is that it provides no help to engineers wishing to make a
secondary compiler pass over only part of a workspace.
4. Second Workspace
The simplest and most obvious solution, this approach requires that
each engineer build his or her workspace a second time on each supported
architecture. Much as each architecture's build must be done in a
separate workspace, so too would each compiler's. This solution
requires no modification to existing tools, and all normal build
products would be generated. A single environment variable (__GNUC)
generally controls which compiler is used for a particular build.
4.1. Build Time Costs
The cost of this option is approximately equivalent to that of a
second internal build as described in section 3.
4.2. Disk Space Costs
This option approximately doubles the disk space requirements for a
complete build. Of course, builds could be done with the primary and
secondary compiler on separate hosts and/or at separate times so that at
any given time the disk space consumed might be less than that amount.
4.3. Active Engineer Time Costs
Engineers will be required to perform steps similar to those already
required for building on multiple architectures, such as creation of
additional environment files. No new tasks are associated with this
solution, however; the amount of active time spent on doing builds would
simply be doubled. We estimate that this amounts to no more than a few
minutes a week for each engineer.
4.4. Risks and Drawbacks
Because this solution requires no tools changes and relies only on
well-understood existing behaviours, it presents the fewest risks.
However, it requires the greatest amount of build time and disk space,
and requires an (admittedly trivial) set of additional steps of each
engineer. Without automated tool assistance, it's likely that secondary
compilation would be overlooked by some fraction of implementors.


General Information about Islam
The literal meaning of Islam is peace; surrender of one's will i.e. losing oneself for the sake of God and surrendering one's own pleasure for the pleasure of God. The message of Islam was revealed to the Holy Prophet Muhammad (peace and blessings on him) 1, 400 years ago. It was revealed through angel Gabriel (on whom be peace) and was thus preserved in the Holy Quran. The Holy Quran carries a Divine guarantee of safeguard from interpolation and it claims that it combines the best features of the earlier scriptures.
The prime message of Islam is the Unity of God, that the Creator of the world is One and He alone is worthy of worship and that Muhammad (peace and blessings on him) is His Messenger and Servant. The follower of this belief is thus a Muslim - a Muslim's other beliefs are: God's angels, previously revealed Books of God, all the prophets, from Adam to Jesus (peace be on them both), the Day of Judgement and indeed the Decree of God. A Muslim has five main duties to perform, namely; bearing witness to the Unity of God and Muhammad (peace and blessings on him) as His Messenger, observing the prescribed prayer, payment of Zakat, keeping the fasts of Ramadhan and performing the pilgrimage to Mecca.
Islam believes that each person is born pure. The Holy Quran tells us that God has given human beings a choice between good and evil and to seek God's pleasure through faith, prayer and charity. Islam's main message is to worship God and to treat all God's creation with kindness and compassion. Rights of parents in old age, orphans and the needy are clearly stated. Women's rights were safeguarded 1,400 years ago when the rest of the world was in total darkness about emancipation. Islamic teachings encompass every imaginable situation and its rules and principles are truly universal and have stood the test of time.
In Islam virtue does not connote forsaking the bounties of nature that are lawful. On the contrary one is encouraged to lead a healthy, active life with the qualities of kindness, chastity, honesty, mercy, courage patience and politeness. In short, Islam has a perfect and complete code for the guidance of individuals and communities alike. As the entire message of Islam is derived from the Holy Quran and indeed the Sunnah and Hadith (the traditions and practices of the Holy Prophet, peace and blessings on him) it is immutable in the face of change in time and place. It may appear rigid to the casual eye, in actual fact it is most certainly an adaptable way of life regardless of human changes.
Islam teaches that the path to spiritual development is open to all. Any individual who searches the One Creator can seek nearness to God through sincere and earnest worship; it is central to establishing a relationship with the Almighty. This positive message for humanity fills hearts with hope and courage.
At present there are 1.5 billion Muslims worldwide and they form the majority in more than 50 countries of the world. Today Islam is the fastest growing faith in the world - its beautiful message is reaching millions in the far corner of the earth.
From www.islam.com


*What have you learnt about yourself and your ego as a result of the core learning?
That I don't have to be ashamed asking for help when I don't understand something or be embarrassed of my work. Also that I don't have to compare my work with others' as we all have different backgrounds.
*What are the role of values, empathy, and self awareness in learning and programming?
It's part of the process of learning and programming to work with others not only when seeking for help but also when providing it so we all must be humble and empathetic.
* What has surprised you the most about the core learning?
Learning about neuroplasticity and growth mindset.
*What were the most challenging aspects of the core learning?
Reflecting and writing about my values and identity.
*Why do you think that we, a programming school, are spending so much time focusing on core learning in a web development bootcamp course?
Because it's very important to learn and develop these skills to be part of the tech industry.
*Does the time you spent studying core learning here feel like a waste of time? Should you have just used that time to practise programming instead? Justify your answer.
Not at all, reflecting and understanding myself better, learning how to deal with problems and how to work with others was something I''ll take it for life.


1. There are three states of being. 1. There are three states of being. 1. There are three states of being.
Not knowing, action and completion. Not knowing, action and completion. Not knowing, action and completion.
2. Accept that everything is a draft. It helps to get done.
2. Accept that everything is a draft. It helps to get done.
2. Accept that everything is a draft. It helps to get done.
3. There is no editing stage.
3. There is no editing stage.
3. There is no editing stage.
3. There is no editing stage.
4. Pretending you know what you’re doing 4. Pretending you know what you’re doing 4. Pretending you know what you’re doing
is almost the same as knowing what you is almost the same as knowing what you is almost the same as knowing what you
are doing, so just accept that you know are doing, so just accept that you know are doing, so just accept that you know
what you’re doing even if you don’t what you’re doing even if you don’t what you’re doing even if you don’t
and do it.
5. Banish procrastination. If you wait more 5. Banish procrastination. If you wait more 5. Banish procrastination. If you wait more
than a week to get an idea done, abandon it. than a week to get an idea done, abandon it. than a week to get an idea done, abandon it.
6. The point of being done is not to finish but to get other things done. 6. The point of being done is not to finish but to get other things done.
7. Once you’re done you can throw it away. 7. Once you’re done you can throw it away. 7. Once you’re done you can throw it away.
8. Laugh at perfection. 8. Laugh at perfection. 8. Laugh at perfection. 8. Laugh at perfection.
It’s boring and keeps you from being done. It’s boring and keeps you from being done. It’s boring and keeps you from being done.
9. People without dirty hands are wrong. 9. People without dirty hands are wrong. 9. People without dirty hands are wrong.
Doing something makes you right. Doing something makes you right. Doing something makes you right.
10. Failure counts as done. So do mistakes. 10. Failure counts as done. So do mistakes. 10. Failure counts as done. So do mistakes.
11. Destruction is a variant of done. 11. Destruction is a variant of done. 11. Destruction is a variant of done. 11. Destruction is a variant of done.
12. If you have an idea and publish it on the
internet, that counts as a ghost of done. 12. If you have an idea and publish it on the
internet, that counts as a ghost of done.
13. Done is the engine of more. 13. Done is the engine of more. 13. Done is the engine of more. 13. Done is the engine of more.
13. Done is the engine of more. 13. Done is the engine of more. 13. Done is the engine of more. 13. Done is the engine of more.
13. Done is the engine of more. 13. Done is the engine of more. 13. Done is the engine of more. 13. Done is the engine of more.


Updated on January 26th, 2015 by eli
Adam Harvey
New Relic
- Bio:
- Adam is a PHP Agenteer (it's totally a word) at New Relic who spends most of his time swearing at C compilers and the PHP API, usually not in that order. In between said bouts of invective, Adam works on various open source projects, including PHP, plays cricket, kayaks, and continues in his ongoing quest to find the best beer in the world. (Well, OK, it’s totally Westvleteren 12, but it’s a good excuse to drink more beer.)
-
Session
Intermediate
-
PHP 7 is (Almost) Here. OMG! PANIC!
If all goes well, PHP 7 will be released late this year. Given that PHP 5.6 will be completely end of lifed less than two years later, there's going to be a relatively narrow window for migrating from PHP 5 to PHP 7. This migration may include dealing with backward compatibility breaks, but don't panic! In this session, I'll talk about what's changing, what's not changing, and how to deal with these changes both in terms of performing a one-way migration and keeping code compatible with both PHP 5 and 7.
Room: Automattic
When: Conference Day 2: May 21st, 10:30a - 11:30a
Andrew Cassell
Marine Spill Response Corporation
- Bio:
- Andy Cassell is a full-stack web application developer in Herndon, Virginia who designs and builds user experiences that are delightful on any device. Andy is an employee of the non-profit Marine Spill Response Corporation, the largest dedicated oil spill and emergency response organization. He works on their website and internal web applications.
-
Session
Beginner
-
Responsive Web Design for Non-Designers
A responsive website or application provides an optimal experience across a wide range of mobile and desktop devices. In this talk, we'll start with the basics of responsive design and cover the various server side and client side approaches used to improve the usability of your web applications and content.
Room: ServerGrove
When: Conference Day 2: May 21st, 2:00p - 3:00p
-
Short Talk
Intermediate
-
Manage Private Internal Dependencies With Composer and Satis
In this talk we'll discuss how to set up and use Composer to pull open-source packages from public repositories on packagist.org. Then we'll learn how to create your own private/corporate package management server using Satis. And we'll go through an example of how to integrate your own private code packaging server into your daily development workflow.
Room: Rosemont
When: Conference Day 1: May 20th, noon - 12:30p
Beau Simensen
dflydev
- Bio:
- Beau Simensen (beau.io) has been a professional polyglot programmer since 1998. He owns dflydev (dflydev.com), a consulting company, and is co-host of That Podcast (@thatpodcast, thatpodcast.io). An active open-sourcer, he created Sculpin (sculpin.io) and helped create Stack PHP (stackphp.com). He is also the Sculpin representative to the PHP Framework Interoperability Group (PHP-FIG). Beau is a proponent of framework agnostic code. Unglue all the things!
-
Tutorial
Beginner
-
Managing Dependencies with Composer
Traditionally, managing third-party code in PHP projects has not been a trivial task. Fortunately, the PHP community now has Composer, a top-notch dependency manager. Learn what Composer is and how you can put it to work for fun and profit. You will see how to set up a new project, find packages, as well as how to create and distribute your own packages.
Room: Chicago
When: Tutorial Day: May 19th, 9:00a - 12:30p
Ben Marks
Magento
- Bio:
- Over ten years' experience developing in PHP and open source eCommerce. Slogged through the eComm agency world for almost six years as a developer and Magento U trainer & consultant before joining Magento full time as Developer & Community Evangelist. Currently traveling the world learning how people are using Magento and how we can continue to improve it, with the goal of making eCommerce a little less painful. NOTE: I will not be available on May 22.
-
Session
Intermediate
-
Magento 2>1: Modernizing an Open-Source eCommerce Powerhouse
Whether you work with it daily, infrequently, or never, Magento 1 has been the ascendant PHP eCommerce platform for five years. The Magento 2 era is now upon us, featuring an updated architecture with full, configurable DI, aspect-oriented programming, and a truly decoupled, Composer-based system of modules that allows Magento components to be integrated into PHP app environments. This talk looks at some of the improvements and remaining challenges facing Magento 2.x on its way to a GA release and informs participants on how to get involved with the development and documentation on GitHub.
Room: ServerGrove
When: Conference Day 2: May 21st, 5:00p - 6:00p
Ben Ramsey
ShootProof
- Bio:
- Ben Ramsey is a web craftsman, API enthusiast, and open source advocate living in Nashville, TN. Passionate about the PHP community, Ben is the founder of Atlanta PHP and organizer of Nashville PHP. A core contributor to PHP, Ben is co-author of php|architect's Zend PHP 5 Certification Study Guide and PHP 5 Unleashed, author of numerous articles, and a popular speaker at PHP conferences. When not building ShootProof's platform for professional photographers, Ben enjoys good beer and spending time with his family. Ben blogs at benramsey.com and is on Twitter and GitHub at @ramsey.
-
Session
Intermediate
-
A Toolbox for APIs and Integrations
Modern web applications do more than display data from a database. They talk to all kinds of services, bringing together data from a variety of sources and combining it in new and meaningful ways. This is the age of APIs and integrations! Whether internal or external, we often find ourselves building or integrating with APIs. There are many tools to help, but it's difficult to know which tools are best. In this talk, we'll narrow the field to take a look at a few useful tools for building, consuming, debugging, and testing APIs and integrations.
Room: Chicago
When: Conference Day 2: May 21st, 2:00p - 3:00p
-
Session
Intermediate
-
HTTP is Dead. Long Live HTTP/2!
Request for Comments (RFC) 2616 reigned supreme as the specification for the hypertext transfer protocol (HTTP) for fifteen years. Now, it's been obsoleted by a handful of new RFCs, and HTTP 2.0 is on the horizon. In this talk, we'll take a look at the new RFCs, discuss the differences and clarifications they make, and take a look ahead at what's new in HTTP 2.0 and what it means for you.
Room: Automattic
When: Conference Day 3: May 22nd, 9:00a - 10:00a
Bradley Holt
IBM Cloudant
- Bio:
- Bradley Holt is a Developer Advocate with IBM Cloudant, a globally distributed data layer for web and mobile applications. He is the author of several publications including Building a Hypermedia API in CouchDB (php[architect]), Scaling CouchDB (O'Reilly Media), and Writing and Querying MapReduce Views in CouchDB (O'Reilly Media). He has spoken at numerous conferences including ZendCon, OSCON, and the jQuery Conference. Bradley is a Code for America Brigade Captain with Code for BTV in Burlington, Vermont and is the co-organizer of Vermont Code Camp and the Northeast PHP Conference.
-
Session
Intermediate
-
Building Offline-Enabled Apps with PouchDB
Mobile web apps shouldn't stop working when there's no network connection. Offline-enabled apps built using PouchDB can provide a better, faster user experience while potentially reducing battery and bandwidth usage. Based on the Apache CouchDB database, PouchDB is an open-source syncing JavaScript database that runs within a web browser. Learn how to use the HTML5 Offline Application Cache, PouchDB, CouchDB, and Cordova/PhoneGap to develop fully-featured and cross-platform native apps, responsive mobile web apps, or high-fidelity prototypes that work just as well offline as they do online.
Room: Rosemont
When: Conference Day 1: May 20th, 5:00p - 6:00p
Chris Cornutt
Salesforce, Inc.
- Bio:
- For the last 10+ years, Chris has been involved in the PHP community in one way or another. These days he's the Senior Editor of PHPDeveloper.org and lead author for Websec.io, a site dedicated to teaching developers about security and the Securing PHP ebook series. He's written for several PHP publications and has spoken at conferences in both the U.S. and Europe. He's also an organizer of the DallasPHP User Group and the Lone Star PHP Conference and works as a developer on the Global Cyber Security group at Hewlett-Packard.
-
Training
Beginner
-
Web Security Training
A full day crash course in Web & PHP Security practices that teaches you everything you need to know to begin protecting yourself from malicious users. This class covers the top web security attacks, how to detect them, how to protect yourself from them, and how to recover if you are breached. It also covers PHP specific security topics such as best practices for protecting user sessions and handling user logins & passwords. (Lunch will be provided)
Room: Chicago
When: Training Day: May 18th, 9:00a - 5:30p
Chris Tankersley
Tankersley Web Solutions, LLC
- Bio:
- Chris Tankersley is a husband, father, and PHP developer in Northwest Ohio. He works with many different systems including Drupal, Wordpress, Zend Framework, Symfony, and others. He founded the Northwest Ohio PHP User Group, and works with local developers helping them with programming and server administration. Chris work with PHP primarily, with some work done in Node.js and Python for personal projects.
-
Session
Beginner
-
OOP is More Than Cars and Dogs
When developers are introduced to object-oriented programming, one of the first things they are taught is that nouns turn into objects, verbs into methods, and Dog is a subclass of Animal. OOP is more than just turning things into classes and objects and showing that both Boats and Cars have motors, and that Dogs and Cats both speak(). Let's look at OOP in real-world settings and go beyond cars and dogs to see how to use object-oriented programming properly in PHP. Traits, composition, inheritance – none of it is off limits!
Room: Rosemont
When: Conference Day 1: May 20th, 10:30a - 11:30a
Dave Stokes
Oracle
- Bio:
- Dave Stokes is a MySQL Community Manager for Oracle and previously was the MySQL Certification Manager for MySQL AB and Sun Microsystems, He discovered PHP in its early days when running a non-profit website with over 5,000 static pages and was looking for a templating engine. He has worked for companies ranging alphabetically from the American Heart Association to Xerox. He lives in Texas, does not have enough time to ride his Honda Goldwing motorcycle, and travels extensively for work. He also wonders who really reads all these bios for conferences :-)
-
Session
Beginner
-
MySQL Replication for Beginners
MySQL Replication is an easy way to get multiple copies of your data and is easy to set up. But there are many options, some neat tricks, and a few gotchas that you need to know if you want to do it correctly. Come learn about statement versus row-based replication Global Transaction IDentifieds, async versus synchronous, why your network topology can hurt you, and how to use the MySQL Utilities to easily set up replication (and automatic fail over) on the command line.
Room: ServerGrove
When: Conference Day 3: May 22nd, 9:00a - 10:00a
Davey Shafik
Engine Yard
- Bio:
- Davey Shafik is a full-time developer with over 14 years of experience. He is a Community Engineer at Engine Yard, has written three books, articles, and spoken at conferences the world over. He is best known for his books, the Zend PHP Certification Study Guide and PHP Master: Write Cutting Edge Code, and as the creator of PHP Archive (PHAR) for PHP 5.3. Davey is passionate about improving the tech community. He co-organizes the Prompt initiative (prompt.engineyard.com), dedicated to lifting the stigma surrounding mental health discussions, and has worked with PHPWomen since its inception.
-
Session
Advanced
-
Extending MySQL with PHP's MySQL Native Driver
PHP's MySQL Native Driver (mysqlnd) has been providing great performance benefits since PHP 5.3, but there is more to it than just replacing libmysqlclient. MySQL Native Drivers plugin architecture provides the ability to do read/write splitting, caching, load balancing, and more. Learn how to do all of these things simply and transparently, as well as how to write your own plugins using PHP.
Room: Rosemont
When: Conference Day 1: May 20th, 2:00p - 3:00p
Derick Rethans
MongoDB
- Bio:
- Derick Rethans is a PHP internals expert, author of Xdebug and an OpenStreetMap and mapping enthusiast. He has contributed in a number of ways to the PHP project, including the Xdebug debugging tool, and various extensions and additions. He's a frequent lecturer at conferences, the author of php|architect's Guide to Date and Time Programming, and the co-author of PHP 5 Power Programming. He is now working at MongoDB to work on the PHP driver for MongoDB.
-
Session
Intermediate
-
Debugging: Past, Present and Future
This talk goes over past, present, and future debugging techniques. It will start with an overview of PHP's standard features for debugging, additional libraries, and functionality in frameworks. It continues with live-action debuggers, such as Xdebug, which provides information while a script is being executed. Future-wise, I talk about PHP 5.6's phpdbg and will unveil a project that allows you to "step back" while debugging.
Room: Automattic
When: Conference Day 1: May 20th, 10:30a - 11:30a
-
Session
Advanced
-
One Extension, Two Engines
This is the tale of the new MongoDB driver for PHP and HHVM. We started off with one massively complex (and legacy) driver. The goal was an easy to maintain extension. In our case that became two code drivers and a user-land supporting library in PHP. This talk explains the choices, considerations, and issues we ran into while developing the driver to work with multiple engines, and our first steps supporting Facebook's HHVM.
Room: Rosemont
When: Conference Day 2: May 21st, 10:30a - 11:30a
-
Training
Beginner
-
MongoDB Essentials
This full-day workshop will explore MongoDB at depth. After a crash course in non-relational database concepts, attendees will learn all of the MongoDB essentials, from its flexible storage model and query API to advanced topics such as schema design, data aggregation, and indexing. Beyond single-node deployments, we'll investigate how MongoDB can achieve fault-tolerance and scalability with replica sets and sharding, respectively, and how to effectively support those deployments in a production application. (Lunch will be provided)
Room: Rosemont
When: Training Day: May 18th, 9:00a - 5:30p
Eric Mann
10up
- Bio:
- Eric Mann is a seasoned web developer with experience in languages from JavaScript to Ruby to C#. He has been building websites of all shapes and sizes for the better part of a decade and continues to experiment with new technologies and techniques. Eric is a Lead Web Engineer at 10up (http://10up.com) where he focuses on developing high-end web solutions powered by WordPress.
-
Short Talk
Beginner
-
Rediscover the Power of WordPress
WordPress pushes out new features on a rigorous 4-month release cycle; this means the WordPress you remember from 3 years ago looks nothing like the WordPress of today. Together, we'll walk through the newer features the platform has introduced over the past few releases, covering everything from a more streamlined editorial workflow to more a modern, object-oriented, and well-tested codebase. Engineers who abandoned the platform years ago will see everything they've missed since then and can objectively evaluate if it's time to rejoin the > 23% of the Internet already using WordPress.
Room: Chicago
When: Conference Day 2: May 21st, noon - 12:30p
-
Tutorial
Intermediate
-
Testing as Regression Prevention
The best way to fix bugs in your code is to first write a script that reproduces the bug, then refactor your code so that the bug disappears. This is the essence of unit testing. Attendees will walk through a pre-built PHP application with a handful of reported bugs - broken features, security vulnerabilities, and performance bottlenecks. They'll see first-hand how to write code to test the bug in isolation from the greater application. Then they'll learn strategies for refactoring the application to fix the issue.
Room: ServerGrove
When: Tutorial Day: May 19th, 2:00p - 5:30p
Gemma Anible
Giguebytes, LLC
- Bio:
- Gemma is a software engineer, video gamer and recovering classical violinist who has been developing PHP web applications since before PHP5 (and applications in C, .NET and Delphi since before then). She is passionate about using pragmatic processes and tooling to support developers of all types and skillsets, and her level of excitement over learning new dev technology tends to correlate strongly with her level of caffeination. Gemma and her husband live with their two dogs in New Mexico, where they climb volcanoes for fun.
-
Session
Beginner
-
Testing Spaghetti
The nightmare is at your doorstep! You've been tasked with extending a legacy PHP web application, a mash of raw SQL and HTML and PHP all inside out and backwards and spread over a several dozen (or hundred!) files. You know getting the system under test will push the project forward, but where do you start? Come learn a slow, careful approach to incorporating automated unit tests into untestable code. See how your tests can slip in unobtrusively to take over your codebase from the inside, eating away at the spaghetti and creating a solid platform for future development.
Room: Automattic
When: Conference Day 1: May 20th, 2:00p - 3:00p
-
Session
Intermediate
-
Navigating Your Git Repository
You can git pull, merge, and even force-push with the best of them, but what's really going on in that .git folder? What's a commit, and how does it know where it came from? What does checking out a tag have to do with detaching your head, and why does rebase mess things up so thoroughly? In this talk, we'll get inside individual commits and learn to push them around, then zoom out to the whole repository. Come find out how Git's glorified game of Connect-the-Dots can improve the development workflow and collaboration opportunities for your whole team!
Room: Chicago
When: Conference Day 2: May 21st, 5:00p - 6:00p
Hao Luo
Northwestern University
- Bio:
- Hao Luo is a Senior Developer at Northwestern University. He is active in the PHP community and an organizer of Laravel Chicago. He is an advocate for web accessibility, vanilla javascript, and unit testing. In his spare time, he is an amateur photographer and learning improv.
-
Session
Intermediate
-
Ditching jQuery
JQuery is awesome, but with all major browsers following the ES and HTML5 specs, the library has become more of a convenience than a necessity for browser compatibility. While the library is useful and ubiquitous, it does distract us from learning the language that it's built on. This talk will outline functionalities that pure javascript provides, and also provide steps we can take to begin writing vanilla javascript applications and start appreciating the power and uniqueness of javascript.
Room: ServerGrove
When: Conference Day 2: May 21st, 10:30a - 11:30a
Hugo Hamon
SensioLabs
- Bio:
- Hugo Hamon is a PHP and Symfony certified developer. After five years of professional PHP web development in web agencies for famous french customers, he now works as a consultant and head of training at SensioLabs. On his free time, Hugo contributes to Symfony and many other open source projects. Hugo also wrote and contributed to french and english books related to PHP and the Symfony framework.
-
Tutorial
Intermediate
-
Introduction to Design Patterns in PHP
Design patterns are really helpful to make code easy to extend, maintain and unit tests. That's also why they're used in many modern web frameworks in order to make them fully flexible. However, learning and understanding design patterns is often not an easy task because it's usually difficult to find real world examples of implementation. In this 3 hour tutorial, you will discover some most useful design patterns in action with real world practical examples.
Room: Rosemont
When: Tutorial Day: May 19th, 2:00p - 5:30p
Ilia Alshanetsky
Advanced Internet Designs Inc.
- Bio:
- Ilia Alshanetsky is a CTO at Centah Inc., a company specializing in providing solutions for the retail industry. Over the last 10 years Ilia has been heavily involved in development of PHP, as a Core Developer and Release Master, authoring many extensions and language improvements. Ilia is also interested in security and performance, and frequently is writing or speaking on these and other PHP related topics. In his spare time he pretends to be a pro-photographer and engages in various sports.
-
Session
Intermediate
-
Business Logic Security
This session will outline security practices and solutions designed to address security issues within an application's business and processing logic, which are often overlooked in favor of basic security flaws such as SQL Injection or XSS. The session will focus on how to implement mechanisms for improving data access, avoiding common ACL pitfalls, and more.
Room: Automattic
When: Conference Day 1: May 20th, 3:30p - 4:30p
Jeff Carouth
Liftopia, Inc.
- Bio:
- Jeff Carouth is a web application developer honing his programming and skiing skills at Liftopia. He is an active member of the PHP community, speaker, co-organizer of BCSPHP, and co-host of the Loosely Coupled podcast. He believes quality code, testing, and automation are necessary ingredients in a recipe for a successful software project. When not hacking away at code he is a father and husband, beer and Scotch enthusiast, and an amateur photographer. Follow Jeff on Twitter as jcarouth or read his blog at http://carouth.com
-
Session
Beginner
-
Dependency Injection, Dependency Inversion, and You
As developers we're told to limit the coupling of our code for testability and reusability. Taking the time to understand exactly what dependency injection is and how to apply it in PHP projects is important. In this talk we will take a look at both dependency injection and dependency inversion from a theoretical and practical standpoint. Walking out of the room you should understand the motivation for practicing dependency injection as well as how the Dependency Inversion Principle can make your code more SOLID.
Room: Chicago
When: Conference Day 3: May 22nd, 10:30a - 11:30a
-
Tutorial
Beginner
-
Fundamental Object-Oriented PHP
PHP as a language supports several programming paradigms including procedural, object-oriented, and, to some extent, functional programming. In this tutorial we will talk about the fundamentals of object-oriented design and how we can apply then using PHP. Specifically, we will cover the power of interfaces, the differences between inheritance and composition, dependency injection and inversion, and the idea of the SOLID principles. Regardless of your experience with PHP and OOP you should walk out of this tutorial with a better understanding of how to apply these ideas to your projects.
Room: Automattic
When: Tutorial Day: May 19th, 9:00a - 12:30p
Jeremy Mikola
MongoDB
- Bio:
-
Jeremy Mikola is a software engineer at MongoDB's NYC office. As a member of the driver and evangelism team, he helps develop the PHP driver and contributes to various OSS projects, such as Doctrine ODM and React PHP. Jeremy lives in Hoboken, NJ and is known to enjoy a good sandwich.
-
Training
Beginner
-
MongoDB Essentials
This full-day workshop will explore MongoDB at depth. After a crash course in non-relational database concepts, attendees will learn all of the MongoDB essentials, from its flexible storage model and query API to advanced topics such as schema design, data aggregation, and indexing. Beyond single-node deployments, we'll investigate how MongoDB can achieve fault-tolerance and scalability with replica sets and sharding, respectively, and how to effectively support those deployments in a production application. (Lunch will be provided)
Room: Rosemont
When: Training Day: May 18th, 9:00a - 5:30p
Jessica Rose
Open Code
- Bio:
- Jessica Rose is an American-born technologist based in the UK. A self taught programmer with a focus on open access to technical education, she focuses on helping adults without a technical background enter into roles in technology. Founder of Open Code and co-founder of Trans*Code she’s always happy to talk about new projects in community education.
-
Session
Intermediate
-
Impostor Syndrome and Individual Competence
This talk will focus on how Impostor Syndrome and the Dunning-Kruger effect work to undermine our estimation of our individual skills. Who do these cognitive biases affect? And how do they collectively shape the face of the software development industry? The impact of these biases on personal and professional relationships among individuals and groups will be examined, along with what can be done to diagnose and cope with them.
Room: Automattic
When: Conference Day 2: May 21st, 2:00p - 3:00p
Joe Ferguson
Vector Media Group
- Bio:
- PHP Developer, system administrator, community builder, conference organizer, conference speaker, maker, hacker, tinkerer, husband, and owned by cats.
-
Tutorial
Beginner
-
Adventures in Laravel 5
With the release of Laravel 5 there are a lot of new toys to play with. We'll cover the new features and how to start using them in your applications. We'll be covering the new directory structure, changes in blade templates, commands and events, form requests, helpers, route caching and middlewares, controller method injection, migrating from Laravel 4, and more! We will also discuss changes to Illuminate packages and the new Elixir, Socialite, Contracts packages and tying it all together in the Homestead vagrant environment.
Room: ServerGrove
When: Tutorial Day: May 19th, 9:00a - 12:30p
Joe Shindelar
Lullabot
- Bio:
- Joe is the Lead Trainer and a Senior Architect at Lullabot and has been building PHP applications and participating in Drupal core development since 2006. Joe is a sought-after presenter who has spoken at numerous events locally and internationally about everything from code-level development to user interface, design, and community involvement. Joe is active in the Drupal community where he has helped to develop and improve Drupal's image handling and manipulation features, and mentoring new contributors. Joe also enjoys teaching snowboarding, and playing with all the fun new technologies.
-
Session
Beginner
-
The Dark Art of Debugging
Don't assume anything. Being able to replicate, isolate, and fix bugs in software requires methodical logic, creative problem solving, curiosity, and a never-ending quest for understanding. Bugs are an inevitable part of the software development process. But they can also be extremely elusive: there's a space between zero and one, between the way the machine counts and thinks and the way we count and think. When you search for bugs in software and its stubborn resistance to human desires, that space is where you'll find them. This talk is about the skills (and some of the tools) used to debug.
Room: Automattic
When: Conference Day 2: May 21st, 3:30p - 4:30p
-
Session
Beginner
-
A Developer's Primer to Managing Developers
We all do our best work when we're excited, motivated, and focused, when we're free of blockers like unanswered questions, and free of distractions like meetings. This presentation will be useful for both developers and the people who work with them. It will empower developers to identify and communicate things that just don't feel right in ways that enable managers to better support them; and it will give project managers insight on the behaviors they should be on the lookout for, what those behaviors might possibly mean, and what they can do to facilitate developers kicking ass.
Room: ServerGrove
When: Conference Day 3: May 22nd, 10:30a - 11:30a
Jonathan Reinink
Compass Creative Studio Inc.
- Bio:
- Jonathan Reinink is a long time front and back-end web developer with a keen interest in PHP. Jonathan currently serves a senior web developer at Compass Creative, a Canadian based marketing company. In recent years Jonathan has transition from being a "lone wolf" developer to being much more active in the PHP community. Most notably, Jonathan has contributed two packages to the The PHP League, including Glide (an image manipulation library) and Plates (a native PHP template system). Jonathan has a strong design sense and is an advocate of using good design to help promote technical projects.
-
Session
Intermediate
-
Enough about Classes, Let's Talk Templates
We talk a lot about writing highly decoupled, dependency injectable, single responsibility classes and methods.  But, are we thinking enough about what defines quality templates? How seriously are you taking security when writing your templates? How tightly are these templates coupled to the objects they use? This talk will show you how to write awesome, modern-day PHP templates. We'll look at new features you should be using, how to decouple templates from your business logic, where to best place your presentation logic, and more.
Room: Chicago
When: Conference Day 1: May 20th, 3:30p - 4:30p
-
Short Talk
Intermediate
-
Rethink Image Manipulations with Glide
Almost all apps require some form of image cropping or resizing. This is often done with background jobs, using tools like GD and ImageMagick. This talk will introduce you to a new technique that uses a recent addition to The PHP League called Glide. Glide is a wonderfully easy-touse on-demand image manipulation library with an HTTP-based API. I'll explain in a little more detail what it is, how it works, and how to set it up!
Room: ServerGrove
When: Conference Day 2: May 21st, noon - 12:30p
Jordi Boggiano
Nelmio
- Bio:
- Jordi Boggiano is the author of a few open source apps/libs (Composer, Monolog, php-console, ..), and frequent contributor to other projects (Symfony2, Twig and others). He has been involved in web development for over 10 years, working mostly with PHP and JavaScript. He is currently maintaining Composer/Packagist while working on Toran Proxy. Find out more at http://nelm.io/jordi
-
Session
Intermediate
-
Composer Best Practices
Composer has grown into the de-facto standard PHP dependency manager. While we struggle to make it easy to use, mastering dependency management and packaging in general remains tricky. In this session you will learn how to leverage Composer version constraints and grasp stabilities and semantic versioning, along with a few more tips on being a good OSS citizen. You should already be comfortable with Composer basics and eager to learn about it some more.
Room: Automattic
When: Conference Day 1: May 20th, 5:00p - 6:00p
-
Keynote
Beginner
-
Behind the Scenes of Maintaining an Open Source Project
The open source world is made from human interactions as much as it is made of code. During this session, Jordi will be sharing his experiences as the Composer Project lead. He will show you glimpses into what it means and feels like to be the maintainer of a popular open source project. By sharing his experiences, Jordi hopes that you will gain a better understanding of the human factor in the open source community.
Room:
When: Conference Day 3: May 22nd, noon - 12:30p
Joshua Silver
Patientco
- Bio:
- Joshua Silver is VP, Product Development and the technical co-founder of Patientco, a healthcare IT and payments startup in Atlanta. At Patientco, he is responsible for overall product direction, R&D initiatives, and technology strategy. Joshua has over a decade of development (mostly PHP/MySQL) and product management experience and frequently speaks on topics such as consumer-centric system design, secure payment processing, and scalable web architecture. Joshua holds a BS in Computer Science from GA Tech. When not working, Joshua is most likely traveling and has been to nearly 30 countries.
-
Session
Advanced
-
Practical Computer Science Concepts Simplified
I often see developers (especially self-taught developers) trying to "reinvent the wheel" because they are not familiar with some key computer science concepts. In this talk, I'll give you the Cliffs notes version of a CS degree, focusing primarily on the highly relevant and immediately usable principles. Sample topics include: object-oriented design, graph theory, state diagrams, regular expressions, and complexity theory. To get the most out of this talk, you should have a good working knowledge of PHP, but no formal computer science education is required.
Room: Rosemont
When: Conference Day 2: May 21st, 5:00p - 6:00p
-
Session
Intermediate
-
Payment Processing on the Web: Behind-the-Scenes
Working on your first payment processing project? Mystified by MIDs, interchange rates, AVS results, PCI, or payment gateways? Curious about Apple Pay or the United States' transition to EMV (chip-and-signature) credit cards? Learn the nuts and bolts of payment processing on the web and walk away with a plethora of resources to use on your next eCommerce or payment processing project. I'll discuss what actually happens behind the scenes as a card is processed and outline best practices – both technical and operational – for achieving a secure, compliant, and robust processing environment.
Room: Rosemont
When: Conference Day 3: May 22nd, 10:30a - 11:30a
Joshua Warren
Creatuity
- Bio:
- Joshua Warren has been developing web applications with PHP since 1999. He is the Founder & CEO of Creatuity in Dallas, Texas, where he works on eCommerce projects with Magento and the Yii framework. He founded Creatuity in 2008 as a development firm and has grown it to a team of over 25, including 14 developers working across 2 continents. When Joshua isn't developing, he enjoys traveling to new countries to try local food and beer while meeting developers at local meetups as well as connecting with developers around the world via Twitter.
-
Session
Intermediate
-
PHPSpec & Behat: Two Testing Tools That Write Code For You
PHPSpec and Behat are two amazing PHP tools that empower specification-driven development and behavior-driven development. These two tools combined can help you build test coverage, but many people don't realize they can also write much of your code for you. In this talk, we'll see what PHPSpec and Behat can do, through a series of examples and use cases. In other words, I heard you like to code, so I wrote code that writes code while you code.
Room: Rosemont
When: Conference Day 2: May 21st, 2:00p - 3:00p
Loosely Coupled
- Bio:
- Jeff Carouth (@jcarouth) and Matt Frost (@shrtwhitebldguy) talk about topics related to software development.
-
Session
Beginner
-
Loosely Coupled Podcast Recording
Come listen in to a live recording of the Loosely Coupled podcast, hosted by Jeff Carouth and Matt Frost.
Room: Chicago
When: Conference Day 2: May 21st, 9:30p - ???
MajiD Fatemian
Ubisoft
- Bio:
- MajiD Fatemian, is a senior developer at Ubisoft Montreal since 2011. He has contributed to many projects for architecture, implementation and performance-optimization of high-traffic websites in distributed environments. He has been coding in many languages and technologies for the web including Python, PHP, JavaScript and Node.JS. He holds a M.Eng from Concordia University, Montreal. Before joining Ubisoft he was helping to build a start-up, YEP! Interactive, while he worked there as CTO for over 3 years.
-
Session
Intermediate
-
Polyglot Databases
NoSQL databases are everywhere and they're here to stay. For a successful scalable web application, it is vital to understand the capabilities of NoSQL databases. Relational databases are not dead, either, and they will not be. Understanding the abilities of each will help you to make better architectural decisions. Hybrid database solutions could use the best of the two worlds. In this talk, we will delve into the important decision making factors for each. As an example, we will study an online game at Ubisoft Montreal that switched from a SQL database to a polyglot persistence with no data loss and no downtime.
Room: Chicago
When: Conference Day 1: May 20th, 2:00p - 3:00p
Margaret Staples
Aesop Games
- Bio:
- Margaret is part of the AesopGames team. She takes design documents and translates them into game functions, and then delivers that functionality to players through a web interface and to a Unity developer through an API.
-
Short Talk
Beginner
-
Doctrine ORM: What's This, Then?
So you want to use ORM and Doctrine looks pretty cool, so how to get started? This talk will cover the basics of creating entities, generating your database from those entities, as well as adding, altering, and removing records, and a variety of ways to call up the specific set of data you need.
Room: Rosemont
When: Conference Day 2: May 21st, noon - 12:30p
-
Short Talk
Beginner
-
Templates with Twig: Easier Than You Think
Oh Noes! A templating engine! But why? Twig helps you easily manipulate template data while subtly encouraging you to handle all non-trivial logic elsewhere. It's also super easy to start using productively. There will be plenty of super simple examples, so with only a basic understanding of HTML/CSS you'll be able to immediately get started creating your own data rich templates using Twig.
Room: Chicago
When: Conference Day 1: May 20th, noon - 12:30p
Matthew Turland
Blopboard
- Bio:
- Matthew Turland has been working with PHP since 2002. He has been both an author and technical editor for php|architect Magazine, spoken at multiple conferences, and contributed to several popular PHP projects. He is the author of "php|architect's Guide to Web Scraping with PHP" and co-author of SitePoint's "PHP Master: Write Cutting-Edge Code." In his spare time, he likes to bend PHP to his will to scrape web pages and run IRC bots.
-
Session
Intermediate
-
Data Structures in PHP
Some problem classes require specialized data structures to optimize runtime or memory usage. This session will cover more recent additions to the core Standard PHP Library extension from PHP 5.3, as well as several libraries in the wild that offer additional data structures. No computer science background is necessary; this tutorial will present data structures in understandable terms with practical examples.
Room: Chicago
When: Conference Day 2: May 21st, 10:30a - 11:30a
-
Session
Intermediate
-
Mocking Dependencies in Unit Tests with Phake
Reports of the death of TDD have been greatly exaggerated. All but the most trivial of applications make use of the OOP principle of composition and as such require mocking of dependencies in unit tests. While PHPUnit has become the de facto unit testing framework for many projects, its mocking API leaves something to be desired. This presentation is an introduction to Phake, an alternative mocking library with a more concise and intuitive API and a more substantial feature set that removes the headaches from mocking.
Room: ServerGrove
When: Conference Day 1: May 20th, 10:30a - 11:30a
Michael Heap
DataSift
- Bio:
- Michael's a fixer at @DataSift. He works with various high volume data sources (including the Twitter firehose) in real time. Day to day, you can usually find him working with PHP or Go, with a bit of NodeJS or Python thrown in to keep things interesting.
-
Short Talk
Beginner
-
PHP and Standards
The PHP FIG is a group established in 2010 with the aim of putting together a set of best practices for PHP apps to follow. Four PSRs have been accepted and a few proposals are currently under discussion. These PSRs are designed to make it easier for people to build packages that work with each other by providing interfaces that they can implement without enforcing an implementation. This talk will cover the existing PSRs and the ones that are under consideration, and will then take a brief look at the de facto standards that people use to fulfil the requirements of each PSR
Room: Automattic
When: Conference Day 1: May 20th, noon - 12:30p
-
Tutorial
Intermediate
-
Vagrant and Ansible
It works on my box. "I don't have a day to help Dave set up his new PC". "I swear I had the same version installed!" Sound familiar? It was for me too before I started using Vagrant and Ansible. Vagrant is a tool for automating the creation of virtual machines. Of course, that's only half of the battle - once you have a machine you need to configure it. That's where Ansible comes in. By the end of this tutorial, everyone will have created a Vagrant box that installs PHP, Apache2 and configured an example website.
Room: Chicago
When: Tutorial Day: May 19th, 2:00p - 5:30p
Michelle Sanver
Liip
- Bio:
- Michelle Sanver is president of PHPWomen, an inclusive & global network providing support within the PHP community. She also works as a software developer at Liip, based in Zürich, Switzerland. Michelle loves anything community related and is a big advocate of Open Source. She is a code-passionate colourful geek and with more than 10 years of PHP experience she is eager to share her extensive knowledge.
-
Session
Beginner
-
Behat+Mink+PhantomJS = Test ALL THE THINGS!
Sometimes simple unit testing is not enough. There is more to it than testing JavaScript and the rendering of your page. In this talk I will show you how you can use Behat+Mink+PhantomJS to accomplish screenshot comparison and test your JavaScript implementations and your PHP code using the same human-readable language: Behat's Gherkin.
Room: Rosemont
When: Conference Day 2: May 21st, 3:30p - 4:30p
-
Session
Beginner
-
Handling Highly Connected Data with the Neo4j Graph Database
Traditional relational databases — ironically — are not that good at the complex relationships some modern applications need. Multiple joins and complex sub-queries can gradually take a toll on performance. Graph Databases, on the other hand, are all about relationships. In this talk we will look at using the popular Neo4j graph database with PHP to build efficient relational data for OmNomHub: not your average recipe site.
Room: Rosemont
When: Conference Day 1: May 20th, 3:30p - 4:30p
Mike Hernandez
Etsy
- Bio:
- Michael Hernandez is a Software Engineer on Etsy’s Marketing & Communications team with 6 years of experience teaching for a non-profit in the Bronx, in addition to 6 years as a problem solving consultant & technician. Michael is known among his peers as a champion of testing and testable code and is lauded for his patience, friendly demeanor, and willingness to help anyone in need. Michael represents a unique combination of interpersonal and technological skills, and brings to the table a fresh perspective by drawing on both technical expertise and insight gained during yoga teacher training.
-
Short Talk
Beginner
-
The New Zone: Meditation, Mindfulness, and Code
Open offices are intended to improve communication and idea flow, but are often rife with distractions. We strive to achieve the laser focus of "the zone," and turn to music as an aid, but isn't music just another distraction for our already taxed attention spans? I'll discuss how meditation and mindfulness can help with focusing, without the need for external stimuli or the requirement of total silence. I'll also discuss how my productivity has increased, and how my stress levels have decreased, thanks to Etsy's "Breathing Room," a place where we're encouraged to practice yoga and meditate.
Room: ServerGrove
When: Conference Day 1: May 20th, noon - 12:30p
-
Short Talk
Beginner
-
Testing Culture at Etsy
Etsy is known for its engineering culture, particularly its continuous delivery and integration infrastructure. At the heart of this is confidence in our code, and this confidence is grounded in our tests. I'll discuss how in a short time I grew from a junior programmer who knew nothing about software testing into an engineer who is sought after for help with testing. I've tutored a new hire who couldn't help but shout out loud "Wow, testing is so cool!" I'll provide tips and examples of how it works at Etsy, so that you can create a testing culture of your own.
Room: Automattic
When: Conference Day 2: May 21st, noon - 12:30p
Mo Jangda
Automattic
- Bio:
- Mo wrangles all kinds of code for WordPress.com & Automattic. He likes ice cream and other sugary things.
-
Session
Beginner
-
Skunkworks: Fresh Ideas, No Constraints, Limitless Potential?
The idea of working on a new team on new, fresh ideas with almost no constraints seems like a dream. After a year working on such a team, the dream is still real, but the honeymoon was no piece of cake. I'll share my experience being on a skunkworks-style team, including the ups and downs, lessons learned, and how you too can implement the skunkworks culture in your team.
Room: ServerGrove
When: Conference Day 1: May 20th, 5:00p - 6:00p
Oscar Merida
php[architect]
- Bio:
- Oscar still remembers downloading an early version of the Apache HTTP server at the end of 1995, and promptly asking "Ok, what's this good for?" He started learning PHP in 2000 and hasn't stopped since. He's worked with Drupal, WordPress, Zend Framework, Silex, and bespoke PHP, to name a few.
-
Training
Beginner
-
PHP Foundations for Drupal 8
Are you already an experienced Drupal developer but only feel you’ve grasped the basics of PHP? The Drupal community is embracing improvements and best practices from the wider PHP ecosystem. If you work with Drupal, you’ll want to be prepared! This full day course will guide you through modern practices for programming with PHP, focusing on what you’ll need to work with Drupal 8. (Lunch will be provided)
Room: ServerGrove
When: Training Day: May 18th, 9:00a - 5:30p
Rosina Bignall
Social & Scientific Systems, Inc.
- Bio:
- Rosina is a software engineer and technical lead developing PHP and front end applications. She loves learning and exploring new technologies and integrating them into the workflow. She has made contributions to core AngularJS, Angular-UI, a JSON API plugin for Slim Framework, and started a ZF1/ZF2 compatibility layer allowing new ZF2 apps to work in conjunction with legacy ZF1 apps. She loves horseback riding and she owns a small ranch with horses, chickens and a garden where she applies permaculture principles!
-
Session
Beginner
-
Nitty Gritty AngularJS
What do you absolutely need to know to use AngularJS? How do you bind your data store to user interactions – select, search, edit?  How do you write a Controller? A Service? A Directive? Even more importantly, when do you use each of them? We'll build a simple application that answers all these questions and introduces some tips, tricks, and best practices.
Room: Chicago
When: Conference Day 1: May 20th, 10:30a - 11:30a
-
Session
Intermediate
-
Database Normalization for Developers
Most software centers around some type of database or at least data structures. As software developers we need to understand the principles of database normalization. For the most part, the first three normal forms are common sense. We'll discuss the normal forms and use the classic example of an invoice to demonstrate how to apply the principles.
Room: ServerGrove
When: Conference Day 2: May 21st, 3:30p - 4:30p
Samantha Quiñones
AOL, Inc
- Bio:
- Samantha Quiñones is a polyglot hacker and systems architecture expert. Over the course of her 17-year career, she has built software and led teams for some of the largest names in financial services and digital media and is currently a Principal Software Engineer on the content platform team at AOL. Samantha is an accomplished writer and frequent speaker at technology conferences, a participant in the White House Data Jam on STEM Workforce Quality, Flow, and Diversity and has been recognized by the Huffington Post as one of the top Latinas in American Media.
-
Session
Intermediate
-
Drinking from the Firehose: Real-time Metrics
To understand an application's performance, you have to know what to measure. That's the easy part. How do you take those measurements? And then get them to the people who need them? Well, that's where things get complicated! Let's explore the lessons learned by engineers at one of the world's top web companies in their quest to find meaning at 5 MB/s. We'll discuss the tools and techniques that enable the collection, indexing, and analysis of billions or more datapoints each hour, and learn how these same approaches can empower your applications and your business, no matter the scale.
Room: Automattic
When: Conference Day 3: May 22nd, 10:30a - 11:30a
-
Session
Beginner
-
TDD: Team-Driven Development
Developing software as part of a team introduces a host of challenges. A motivated team working together can marshal the strengths of each of its members to create something larger than the sum of its parts. Teams that don’t work together can falter and make the workplace miserable. Strong teams need strong leaders, and leadership is something that can be cultivated. No matter your job title, if you are part of a team, you can be a leader. We’ll discuss strategies for dealing with conflict, how to be a stronger communicator, and how you can help your team be its absolute best.
Room: ServerGrove
When: Conference Day 1: May 20th, 3:30p - 4:30p
Sandy Smith
php[architect]
- Bio:
- Sandy Smith lives in the Washington, DC area, and has been a web developer for an eternity in the web world: 15 years. He’s spent all but a year of that time consulting, usually for nonprofits and government, working both in-house and in an agency. He’s worked with a hundred or so organizations in various capacities, from basic development to strategic advice to multi-tier applications. He’s the leader of the DCPHP User Group, a member of the php[architect] team, and really committed to helping new developers get up and running in PHP effectively.
-
Training
Beginner
-
Jump Start PHP Training
Are you starting down the path of becoming a PHP developer? Are you teaching yourself the language, regardless of whether you are a brand new programmer, or an experienced programmer in another language and just wanting to understand how PHP does things? Then this full day long course is for you. It will cover all the basics and get you writing your very first PHP program, accelerating your learning of PHP. It will cover at the minimum topics such as: Basic PHP Structure, Variables, Conditional Statements, Arithmetic , Loops, Functions, HTML Forms, and the Basics of Object Oriented Programming. (Lunch will be provided)
Room: Gateway Boardroom
When: Training Day: May 18th, 9:00a - 5:30p
Sebastian Bergmann
thePHP.cc
- Bio:
- Sebastian Bergmann has instrumentally contributed to tranforming PHP into a reliable platform for large-scale, critical projects. Enterprises and PHP developers around the world benefit from the tools that he has developed and the experience he shares.
-
Session
Intermediate
-
Code Coverage: Covered in Depth
The analysis of code coverage is a feature that is extended and improved with each release of PHPUnit. In this session we will cover all aspects of PHPUnit's code coverage functionality in depth. You will learn how to leverage this important functionality more effectively to augment and guide your testing efforts.
Room: Automattic
When: Conference Day 2: May 21st, 5:00p - 6:00p
-
Session
Beginner
-
The Three Dimensions of Testing
The goal of all tests is to discover problems as early as possible. Depending on the context, the same test can be used to answer different questions about the quality of the software under test. Using the three dimensions of goal, scope, and notation is one approach to categorize tests. Attendees of this session will learn which aspects of an application should be tested and how to efficiently implement these tests so that they are easy to write and fast to execute while delivering highly reliable results.
Room: Chicago
When: Conference Day 3: May 22nd, 9:00a - 10:00a
Steve Meyers
- Bio:
- Steve Meyers has worked as a PHP and MySQL scalability expert for the last 15 years at such companies as Omniture (now part of Adobe), Spark Networks (owner of jDate.com), and CrimeReports. He now runs some of the largest independent online communities of college sports fans.When he's not too busy with all of that, he runs the Ski PHP Conference, assists with the OpenWest Conference, is a core team member of the Utah Open Source Foundation, and runs the Provo Linux User Group.
-
Session
Intermediate
-
Websockets and Event-driven Programming with PHP
Modern browsers support a new standard call Websockets, which allow persistent connections between a browser and a server. We'll discuss how to implement Websockets with your client-side Javascript talking to your server-side PHP.
Room: ServerGrove
When: Conference Day 1: May 20th, 2:00p - 3:00p
Tim Lytle
Nexmo / timlytle.net ldt
- Bio:
- Tim has been a contract developer for the past 10 years, and now Developer Evangelist at Nexmo. Having worked on API integration and custom applications, Tim enjoys the Zend Framework, Doctrine2, and well-documented APIs. He’s also the organizer of the Lehigh Valley PHP Meetup.
-
Session
Advanced
-
Building PHP Daemons and Long Running Processes
There are things you don't want to, or can't do, inside a web request. It could be a task that needs to be retired if it fails, maybe one that takes a significantly long time to process, or multiple jobs that need to be processed over time. Whether you're sending an email, processing a video, or consuming Twitter's streaming API, you should be using a separate process, and probably a daemon. Learn how to stop abusing cron, and easily daemonize a PHP script that responds responsibly to process signals.
Room: Rosemont
When: Conference Day 3: May 22nd, 9:00a - 10:00a
-
Tutorial
Intermediate
-
The Wonderful World of APIs
APIs are great when they make difficult things accessible. But APIs can also eliminate common, boilerplate, or tedious tasks. Or, at least, not have to deal with as much. In this session, we will explore APIs you may have never considered by building an application using as many APIs as possible. You will leave with a new knowledge and appreciation of how to use the right APIs for whatever application you're building and save time and effort on redundant tasks.
Room: Rosemont
When: Tutorial Day: May 19th, 9:00a - 12:30p
Wim Godden
Cu.be Solutions
- Bio:
- Wim Godden has been working with open source technologies since 1997 and has been involved in open source projects such as OpenX and PHPCompatibility. Next to web development, he's worked with a wide range of technologies (from database clusters to Internet backbone design) and focuses a lot of his time on high-scalability projects and on coaching/training web engineers.
-
Session
Beginner
-
The Promise of Asynchronous PHP
From ReactPHP to Facebook Hack's Async implementation and many more, asynchronous programming has been a hot topic lately. But how well does async programming support work in PHP and what can you actually use it for in your projects? Let's look at some real-world use cases and how they leverage the power of async to do things you didn't know PHP could do.
Room: Chicago
When: Conference Day 2: May 21st, 3:30p - 4:30p
-
Session
Advanced
-
When Dynamic Becomes Static: The Next Step in Web Caching
When your site gets swamped by a huge amount of visitors, tools like Varnish can improve scalability for static sites. But when user-specific content is needed, a hit to the backend web server is still needed, causing scalability issues. We'll look at a new Nginx module that implements a fast and scalable solution to this problem, changing the way developers think about designing sites with user-specific content, and changing the way data is (pre)processed for dynamic websites.
Room: Chicago
When: Conference Day 1: May 20th, 5:00p - 6:00p
Yitzchok Willroth
- Bio:
- Yitzchok Willroth is a Talmudic scholar and enterprise web application developer (though seldom at the same time) living in Lakewood, NJ. A start-up veteran and dev bootcamp instructor, Yitzchok is often called upon to mentor young dev teams within the Orthodox community. He is the organizer of the ShorePHP User Group and an active participant in the PHPMentoring initiative. Passionate about clean code and robust application architecture, he is also a strong proponent of remote teams as a way for organizations to thrive while affording developers a healthy work:life balance.
-
Keynote
Beginner
-
Everything I Needed to Know, I Learned in Rabbinical School
You’ve been programming for a while now. You’re beginning to feel that you’ve got a handle on things but at the same time can’t escape the feeling that you’ve somehow plateaued in your growth as a software developer. In this talk Yitzchok, a rabbinic scholar and software developer, shares the “wisdom of the sages” as practical, actionable advice – strategies and tactics – that you can use to reinvigorate your growth as a software developer.
Room:
When: Conference Day 2: May 21st, 9:00a - 10:00a
-
Tutorial
Beginner
-
Wax On, Wax Off: Coder Dojo
As software developers we tend to practice our craft as doctors & lawyers rather than as athletes & musicians, failing to recognize the impact the tradeoffs and half measures dictated by many projects have on our growth as craftspeople.  In this workshop, we will examine the case for regular, deliberate practice and engage in guided, collaborative, hands-on learning designed to allow you to integrate code katas into your training.
Room: Automattic
When: Tutorial Day: May 19th, 2:00p - 5:30p
Zeev Suraski
Zend Technologies
- Bio:
-
Zeev Suraski is one of the principal authors of the PHP programming
language. Zeev's involvement with PHP dates back to 1997, when he and Andi
Gutmans created the foundation for PHP 3 - the first 'modern' version of PHP
that actually still resembles PHP 5.6 and even 7.0. Zeev later spearheaded
the PHP 4 project - which made PHP the most popular development language in
the world for creating Web applications, and contributed to PHP 5. Zeev is
probably the person with the most blame for the eternal absence of PHP 6,
having campaigned heavily to call the next generation of PHP as 'PHP 7'
(which, incidentally, was Andi's idea). Zeev co-founded Zend Technologies
in 1999, serves as its CTO and leads the company's research and development
teams. Most recently, he helped create the Z-Ray developer productivity
technology, and developed the Symfony plugin for Z-Ray. Zeev holds a
Bachelor's degree in Computer Science from the Technion, Israel Institute of
Technology.
-
Keynote
Beginner
-
The PHP 7 Story
PHP 7 is right around the corner, with the development team aiming to
release it before the end of 2015. With the previous major release of PHP
having happened more than a decade ago, this is a very exciting milestone in
PHP's history, that promises to bring both far-reaching performance boosts
for real world workloads and a host of new features. In the keynote, Zeev
will share the evolution of PHP's major versions, the behind-the-scenes
story of how PHP 7 came to be and its key benefits and features.
Room:
When: Conference Day 1: May 20th, 9:00a - 10:00a
dev/hell
- Bio:
- Chris Hartjes and Ed Finkler are trapped in Development Hell. They record their freewheeling, uncensored discussions on programming the web, so future generations can learn from their failures.
-
Session
Beginner
-
/dev/hell Podcast Recording
Come listen in to a live recording of the /dev/hell podcast, hosted by Chris Hartjes and Ed Finkler.
Room: Chicago
When: Conference Day 1: May 20th, 9:30p - ???