A GitFlow Model Without Dev Branch

Branches

Our team has decided to break away from the norm of having a Dev branch in our GitFlow branching model. Why you may ask. Well we found that the Dev branch just didn’t quite work for the way the team worked.

A branching model without Dev allows the team two vital things; we won’t be releasing features that we don’t want or aren’t ready, and as a team we understand what a release will contain, what features will be going out together. Consider the fact that in a branching model with a Dev branch, all development work is carried out on Dev or rather feature branches from Dev and merged back in. When these features are ready for release you can create a release branch from Dev with them and then start the process of releasing to production.

However with a team like ours that is much more release focused, we need to know that no features have made it into the Dev branch that we don’t wish to release and the team will have the knowledge to know what features will be going out in which release. Working with release branches and cutting out Dev working as some kind of middle ground means that our team can branch from either the last release or master, and merge in when required.

Removing the Dev branch has led to simplicity from a developer point of view, a developer will know their source of truth much better. A developer knows that in order to develop for the next feature all they need to do is branch from the latest release branch or the master branch. Whereas before the Dev branch can be quite far ahead, and it wouldn’t be a good idea to branch from there if the release needs to go out sooner than the features in Dev. And as mentioned before, developers have much more clear knowledge of what is going out with what, since nothing can be accidently brought in from Dev and future development.

Of course this model works for our team because of the way our team works, this isn’t a model that will be preferable all of the time. If we were to get to the position of releasing features when they are complete and have a continuous deployment process in place, suddenly there becomes a purpose for having a Dev branch and it would be desirable to have one.

Here’s an example of how we used GitFlow for our branching model before removing the Dev branch.

2017-08-02

An example of how our branching model works without a Dev branch.

2017-08-02-2

 

3 Ways Technology Can Optimise Labour Costs

Calculation Costs

With mobile ordering and apps such as Deliveroo, JustEat etc. restaurants are no longer only having to deal with the customers that wish to dine in the restaurant. Predicting how many members of staff you need on a given night can be impossible and staff scheduling can become a challenge. With labour costs being one of your largest expenses, it’s crucial that you stay on top of what you’re spending on employee wages. Successful restaurants are likely to have a good back-office system to help them analyse labour costs in order to ensure they are fully optimising their workforce.

Here’s three ways you can use technology to reduce and maximise on labour costs.

Verify attendance and punctuality

It’s not unheard of for employees to get their friends to clock in for them when they’re running a little late or are unable to make a shift. Before the emergence of Business Intelligence, business owners had to manually add up employee timecards meaning discrepancies often went unnoticed. Having a digital system in place, CCTV drilldown and automatic alerts when something unusual is happening will allow you to be more vigilant, saving on fraudulent or unnecessary labour costs.

Utilise predictive scheduling

A good Business Intelligence system can analyse previous sales data and tell you what your busiest and most profitable times are. It can also show which nights with which teams are most productive. This means you can plan future staff scheduling to ensure you always have the best team working at the best time. Having staff work within a team on a night that will increase their productivity means you can optimise labour costs by ensuring you get the most out of your employees on a given night. It will also mean that you are never under or overstaffed, providing your customers with the best and smoothest dining experience possible. 

Prevent unnecessary overtime

You can’t possibly keep an eye on all your restaurants and all your staff at any one time. Having real-time data available 24/7 allows you to keep track of unexpected busy periods or periods that may require employees to work over their scheduled hours.  If necessary, your Business Intelligence system can be programmed to send you an alert whenever a member of staff hasn’t signed out on time, leaving you to check why and be on top of what is happening in your restaurant. Preventing any unnecessary over-scheduled work will help keep your labour costs to a minimum.

Staff scheduling can be one of the hardest tasks you face as a restaurant owner. Luckily, there are now systems and technologies that can help. Making sure you are optimising labour costs will surely create a smoother working environment, better customer service and higher profits as a result.

To learn more about how technology can help minimise your labour costs, contact us on info@pxtech.com or 01332 921 300.

Joining a new team – Where to start?

It is always difficult when you start working with a new team; you come from somewhere where you know everyone, what they do, the products, customers and processes and have to learn all about the new team, products, processes, customers, suppliers and resist the initial temptation to try and change things. I joined the team here at PXtech as the QA and Release manager, a new role for the company, and I’ve spent a few months on a journey of discovery consisting of lots of questions, usually repeated, as my head tries to fill with all of this new information.

Joining the team at PXtech was like a breath of fresh air to me; the team is successful, dynamic and has a desire to improve. My previous experience working in large corporations felt like wading uphill through treacle in comparison when you wanted to do anything which could not be isolated to your own direct team, but it did help me understand how to sell and achieve improvement.

Everyone can improve and even when I have spent many years working with a team I’ve always found that I’ve had to resist trying too much at once. Sometimes trying to introduce change in a well-established team can be hard because it’s scary moving away from what is known and what has always worked (well or not so well) in the past. In these situations I have found that it is always best to get sponsorship for the change at a senior / influential level. The book “Our Iceberg is Melting” by John Kotter which was recommended to me by a previous manager is very insightful and I recommend it as a good read for anyone struggling to implement any kind of change. This is why we started with a vision for quality.

We’ve now created our vision; we’ve obtained approval and we’re going to start breaking it down into small manageable tasks. We will trial each small improvement and evaluate its effectiveness. For the improvements which turn out well, we will then aim to embed them into normal daily process. We have also started promoting the vision throughout the company to ensure that team members beyond the QA and development team are engaged.

VISION

Engagement

  • Pro-actively seek feedback from our Customers, Partners, Users and each other to drive continuous improvement
  • Collaborative business wide approach that fosters an environment within the workplace that encourages quality
  • Building on customer understanding to create high quality products and solutions

Value

  • Customer at the heart of our business. We get it right first time
  • Expand on our teams skills to ensure the best possible delivery
  • Discover issues sooner in the quality lifecycle to reduce the cost of delivery

Efficiency

  • Clear measures of progress to easily identify our successes and failures
  • Delivery of our Products and Solutions on budget and on time
  • Ensure best practice is used for release, environment and test data management

Steve Playford
QA and Release Manager

5 Ways Charities Can Work Together

Many businesses have already adopted collaboration as a way of working, teaming up with other organisations to innovate and optimise one another’s skills. More often than not however, we are encouraged to be continually working against our competitors in order to get ahead. When it comes to charities, the competitive field is different and amazing things can happen if you work together. Why not team up with your neighbouring charities and reap the benefits, boosting your cause and others in the process?

Here are some ways you can collaborate with other charities to get better results: 

1.     Share a van for home collections

Home collections encourage people to give more because it is easy and convenient for them and allows you to take larger items such as furniture. It is also much easier for donors to sign up for Gift Aid as you already have their address. Home collections are wholly worthwhile but can be a little pricey to carry out. The cost of running a large van and all the collateral expenses can build up, as well as the need for one or two volunteers to collect the goods.

Sharing a van with a neighbouring charity means that costs can be halved and labour shared so you can do more home collections and collect more donations for both causes. Access to a van also allows you to offer home clearance, a service some charities have already found to be very lucrative. 

2.    Host events together for greater impact

Holding local events such as fun runs, coffee mornings and other fundraisers are proven ways to increase donations and bring the community together. Combining budgets, volunteers and contacts is likely to increase reach to the community and allow for a bigger and better event. Raising more donations and sharing them is still likely to get more funds for your cause than going at it alone. Putting on more impressive fundraisers together also puts you in good stead for future events. 

3.    Share an investment on products or services

Perhaps not directly related to raising funds and donations, sharing investments on certain services or products can be a fantastic way to cut costs. The most obvious example is paying for a day’s training for volunteers – if the training cost is the same whether you send 10 or 30 people along to the course, why not share the cost and all get the benefits?

Many products, ranging from consumables like receipt rolls to advanced technology solutions such as Gift Aid software or EPOS systems, are cheaper when purchased in quantity. Teaming up with other charities for a joint procurement exercise means you can achieve all the benefits at a reduced cost. 

4.   Define who specialises in which goods

Many charities look to increase donations and income by having shops which focus on specific goods. On a competitive high street, having two shops nearby that also sell books, DVDs or games is likely to mean fewer donations for all. Taking a collaborative approach – you have all the books, we’ll take the clothing – means that you’re reducing competition, increasing the chances for your volunteers to specialise and helping produce better results for everyone. 

5.    Share volunteers

Gaining and retaining volunteers is one of the largest concerns within the charity retail sector. Getting the right numbers of volunteers, with the right mix of skills and available at the right times, is a challenge for almost every charity organisation we speak with. Teaming up with other charity shops in the area to share volunteers could mean that busy periods for each shop are covered and your volunteers have a more flexible working environment. Although controversial, it could help to begin to solve the difficult problem of not having enough volunteers on specific days while also encouraging volunteers to help lots of different charities. This could work particularly well for smaller charities, who could ‘borrow’ volunteers from more well known names.

Charity shops have an edge that most high street retailers can’t match – it’s not a zero sum game. Increasing your income doesn’t have to be at the expense of your fellow charities. Collaboration is fast becoming the new way to work– and no wonder. Working with other local charities can bring many benefits to your organisation; you can be happy in the knowledge that this is good for everyone and you’ve helped another cause alongside your own.

Indexes and Partitioning

Who is this article for?

This article is designed for people that are already familiar with SQL Server partitioning that want a deeper understanding of how indexing in partitioned tables works.

There are a lot of good articles regarding partitioning, how to create partition schemes and functions. One of my favourites is Brent Ozar that gives an easy introduction and contains links to more deep down resources.

Introduction

Indexes in partitioned tables can be divided into two subgroups:

  • Aligned
  • Unaligned

An aligned index, it’s an index that uses the same partition scheme and column as its table. SQL Server will align indexes for you unless you specify something different, like another partition scheme or filegroup.

The reasoning behind this feature, it’s that in general it’s better to have all the indexes aligned to be able to benefit from partition switching. A good starting point is as always msdn.

Let’s jump into code

First of all, let’s create a simple partitioned table in the heap with some records.

CREATE PARTITION FUNCTION PF_T1(INT) AS RANGE LEFT FOR VALUES (0,5,10)

CREATE PARTITION SCHEME PS_T1 AS PARTITION PF_T1 TO ([SECONDARY],[F1],[F2],[F3])

CREATE TABLE T1(
       ID INT IDENTITY(1,1),
       PartitionKey INT NOT NULL
)ON PS_T1(PartitionKey)

INSERT INTO T1(PartitionKey) VALUES (0),(4),(5),(7),(8),(11),(12),(13)

Now, let’s see where our data is to start with.

EXEC dbo.SeePartitions 'T1'

jsblog

No surprises here, we are in the heap using the Partition Scheme. Now that we know where we are let’s play with some clustered indexes. Let’s start by something simple, a clustered non unique index on the partitioned column.

CREATE CLUSTERED INDEX T1_clustered
   ON T1 (PartitionKey)

EXEC dbo.SeePartitions 'T1'

jsblog1

If we take a look to the index, no surprises either, it’s aligned using the Partition Scheme.

EXEC dbo.SeeIndex 'T1_clustered'

jsblog2

 

 

 

 

Let’s drop the previous index and check the results.

DROP INDEX T1_clustered ON T1

EXEC dbo.SeePartitions 'T1'

jsblog3

 

So we are back on the heap.

CREATE CLUSTERED INDEX T1_clustered
   ON T1 (ID)

EXEC dbo.SeePartitions 'T1'

EXEC dbo.SeeIndex 'T1_clustered'

jsblog4

What has happened there? Why does my index have two columns when I specified only one? If you take a closer look to the statement, we are creating the index on column “ID” not on the “PartitionKey”, that is not the column our table is partitioned on. As mentioned before, SQL Server will try to keep our indexes aligned unless we are very explicit about it and we tell it not to. Microsoft documentation states:

“When partitioning a nonunique clustered index, and the partitioning column is not explicitly specified in the clustering key, SQL Server adds the partitioning column by default to the list of clustered index keys.”

Now, if you look at that index in SSMS you will see that that column is not in the General tab, but it is specified in the Storage tab.

jsblog5

If you click “Script”, you will see what SQL Server has done behind the scenes.

CREATE CLUSTERED INDEX [T1_clustered] ON [dbo].[T1]
(
       [ID] ASC
) ON [PS_T1]([PartitionKey])

Ok, let’s drop the previous index and create a new one.

DROP INDEX T1_clustered ON T1

CREATE UNIQUE CLUSTERED INDEX T1_clustered
   ON T1 (ID)

jsblog6

We get a really good error, it means that the “PartitionKey” needs to be explicitly in the index because our index is unique. Ok, so let’s add it.

CREATE UNIQUE CLUSTERED INDEX T1_clustered
   ON T1 (ID, PartitionKey)

EXEC dbo.SeePartitions 'T1'

EXEC dbo.SeeIndex 'T1_clustered'

jsblog7

The above behaviour is the same for nonclustered indexes so, what if I do know what I’m doing and I really don’t want to have my indexes aligned. In that case you need to be explicit about the filegroup you want the index to live in.

CREATE UNIQUE NONCLUSTERED INDEX T1_nonclustered
   ON T1 (ID)
   ON [PRIMARY]

jsbog8

Conclusions

SQL server tries really hard to keep your indexes aligned for a very good reason, unaligned indexes will have a very painful consequence: switching partitions won’t be possible.

There are very few scenarios where performance can be improved by having unaligned indexes, like calculating a MAX without filtering by the partition key, a really good article can be found here, but rarely the benefits outweighs the cost.

Is technology the key for engaging Generation Z?

By 2020, it is thought that 70% of the world will be using smartphones and 90% of the globe will be covered by mobile broadband networks.

Technology is no longer ‘nice to have’ but is an essential tool for reaching business goals. While this isn’t news to any hospitality organisation owner, a dangerous situation they may find themselves in is thinking that ‘adequate’ technology will suffice.

A lot of hospitality organisations are susceptible to the risk of settling for sufficient restaurant technology. While rational – updating software and hardware nationwide can be a frightening thought – stagnant tech could be the cause for the lack of engagement with your staff and your customers.

The hospitality industry is fickle; customers change their minds and the staff turnover is high. An organisation within the sector has to be at the top of its game when innovating how to utilise its tech to its full advantage in a bid keep employees and customers loyal to their brand. Lagging behind on the technological spectrum not only creates a less engaging environment for your customers to dine but also a less convenient one. Not to mention obsolete tech will cause problems for your employees and potentially create a much more difficult and hostile working environment.

With Millennials and Gen Zers being the future of your business custom and workforce, it’s important to ensure that their need for tech is satisfied. Born into a world of digital, visual and interactivity, their use of technology in everyday practices is innate. They don’t just desire digital ways of working and living; they expect it. For a restaurant to continue to grow with its employees and customers, and to have a future in the 21st century and beyond, it must constantly be implementing new technological practices into the everyday.

This can be difficult if you don’t regularly update your software and hardware or even if you’re not mindful of the risks of outdated technology. This isn’t to say that you should introduce robotic waiters just yet but you should be applying innovative ways of working into the monotony of your prosaic tasks.

Processes like staff scheduling, menu or price changes and stock management can all be administered much easier if your data is hosted in a centralised database and directly linked to a good EPOS system and other Business Intelligence solutions.

Not only will a congruent log of data make life easier for your board of leaders, your management and your floor workers but will give valuable insights into your customers as well. Knowledge really is power – having clear visibility of your organisation, staff productivity and consumer buying habits will allow you the capability of being able to see what areas of your business affect one another and how you can make changes in order to improve said areas.

Implementing digital process behind the scenes, making life easier and more engaging for your employees, means you’ll be prepared to introduce cutting edge technology front-of-house too. You’ll always be ready for the next tech trends and you’ll know what your customers want and expect so that you can always provide them with a fulfilling dining experience.

Engagement is a hot topic in the hospitality industry and a subjective one at that. No doubt it has its rewards but knowing where to start can be difficult. A good place would be to make sure employees are engaged first which in turn will generate positive and meaningful encounters with customers. There are many proven ways to engage staff including practices such as gamification, which can be easily managed through your EPOS to encourage friendly competition and increase productivity. Other examples include employee apps (hosted on a device they pick up every hour of the day) which allows them to select availability, swap shifts with colleagues and view task lists, making their working life as easy and convenient as possible.

Engaged and content employees leads to better customer experiences in-store, increased productivity and increased profitability. People learn better when they’re comfortable with the delivery environment so speaking their language and using technology as a tool to engage will likely see better results.

If you would like to more about how technology can encourage engagement within the hospitality industry, you can contact PXtech on 01332 921 300 or info@pxtech.com.

Learning about Technology in Charity Retail

Getting charities to embrace digital change was a big movement in 2016. We’ve seen more charities begin to turn to technology to help improve their productivity and profitability. This year is likely to see a further push for charities to adopt technological solutions and get ahead of the game.

It is worrying to hear that 56% of charity team leaders don’t have a clear plan for the ongoing digital transformation of their organisation. Perhaps this is because almost half of those asked by Civil Society said they don’t understand it!

Remaining in the dark about the increasing digitisation of the 21st century could be more damaging than you think for the growth of your charity. Technology is now an inherent part in how we live and work and while many are understandably hesitant to this change, learning about it shouldn’t be something to fear. Nobody expects you to become an IT expert; being selective about what you focus on could make learning about the digital world easier than you think.

Opening your mind to the digital and technological sphere will develop your personal skills, ease your working life and contribute to the success of your organisation.

2017 tech trends only look to get smarter. Words like virtual reality, machine learning and big data are discussed at such a rate that it is often difficult for us to keep up. In for-profit retail, EPOS systems are commonplace and the use of tablets on the shop floor to search stock and collect customer feedback is also becoming more prevalent. In many organisations, back office operations are being digitised, data stored electronically and business intelligence software is allowing brands to engage more thoroughly with staff and customers.

Although digitally transforming the third sector is being discussed with a little more urgency, it probably still sounds a lot more frightening than it is. Taking the first step is often the hardest but there are lots of tools you can adopt at little to no cost to you. Websites such as MOOCEDX  and BBC Learning offer free online courses so you and your volunteers can brush up on your skills from home.

It’s always a good idea to collaborate with local businesses so don’t be afraid to ask them for help, hold innovation sessions and discuss any issues you may have. Creating conversations with corporate companies can open to door to meaningful partnerships and opportunities to share skills that both parties can benefit from.

To reiterate; don’t be afraid to take the first steps to incorporating digital technology into your organisation. Even small changes can lead to big results.

Complexity, often not required!

Complexity, this topic is one I find myself coming back to on a daily basis. Good and functional code does not have to be the same thing as complex code! I found a lovely example of this today.

The problem is simple; Establish a way to link Team City builds to a deployed APK or IPA.

Searching the internet showed me that this is a prime example of over-engineering at its best, with build runners flying around here and plugins flying around there. Not required!! All you need is a simple understanding of how Cordova links its version to its generated .APK or .IPA and a way to interact with this.

The config.xml file has a section in it called widget. It contains an attribute called version.

One simple Team City build step that runs a powershell script which alters this value to your desired build number before the build process generates your install files and you have a version linked to a build for all the generated outputs you just produced.

[xml] $xml = Get-Content './config.xml'
 $xml.widget.version = $version
 $xml.Save($path);

Every build process will have a way to track build numbers. So just pass in your build version in the format Major.Minor.Build and you’re all set.

Simple.

Matthew Bird, Senior Developer

5 Ways BI Improves Customer Service

One of the most important aspects of a hospitality business is it’s customer service. There’s no doubt that providing good customer service is integral to success within the sector, particularly when good reviews and referrals are so important for generating new custom.  BI helps with numerous aspects of a business, from simplifying big data to reducing fraud and can also be very useful for improving customer service.

Here’s how BI can help:

Spot trends

Being able to identify certain patterns in customer behaviour means you can know which products sell at what times during which seasons. Making sure you have the desired products available when the customer desires them (and is most likely to purchase them) is important for encouraging repeat custom, good reviews and increasing saleability.

Track stock levels

Ensuring you have the correct products in stock when the customer requires them is equally important. This prevents complaints from customers that your restaurant was out of stock of their desired products. This is most prevalent in seasonal drinks promotions such as making sure you have enough stock to make more cold drinks in the summer.

Staff scheduling

Being understaffed puts strain on your staff, leading to mistakes, slow service and unsatisfied customers. BI can tell you who your most productive employees are and what your optimum sale time is. Having the right staff and the right amount of staff working at the right times can really contribute to providing customers with the best service possible.

Prominent customer voice

Three quarters of adults in the US choose a restaurant based on online search results. Reviews are more important than ever and customers expect to be listened to. Having software that can collect feedback data makes it much quicker for the customers’ voice to get to the owner of an organisation. This makes it much easier for the owner to take feedback on board and make reactive decisions about any changes the business should make.

Deeper analysis = deeper customer satisfaction

Fundamentally, understanding your customer will allow you to provide them with the best customer service possible. Knowing what your customer wants and when they want it means you can make more informed decisions about your business and what it offers. Providing good products that customers truly require will encourage repeat custom and receive better reviews and referrals.

Combining these components and using Business Intelligence to make the right decisions about your organisation will ensure that your customer service is second to none. Data analytics can be very useful to improve many aspects of a business. If you’d like to know how else Business Intelligence can improve your business, get in touch at info@pxtech.com or 01332 921 300.

Keeping Good People

In the world of IT it can be challenging to keep good people. The demand for skilled developers and other IT professionals is booming and more companies are upping their game and offering better perks and “à la mode” cultures to match those of the bigger companies such as Airbnb, Google and Facebook, to name but a few.

With this demand come the vultures, circling outside your building ready to dive on any employee that shows any sign of doubt or itchy feet. They use all tools available to them including things like LinkedIn or even trying to smart their way past the receptionist on the phone by coming up with some elaborate story of why they need to talk to so and so.

But when an employee does plan to jump ship, does throwing more money at them in the hope of retaining them actually work? Are you just delaying the inevitable? Is money really everyone’s first priority?

Obviously money makes the world go round and it’s always going to be high on our requirements, but it’s not what drives most people. A question worth asking yourself is “would you value an employee whose only motivation was money?”

Don’t get me wrong; money is high up there on our list. Many of us live to our means and become accustomed to a certain income, having mortgages, car loans, childcare outgoings, and if like me a healthy shoe obsession to keep funded.

However, when I look at my colleagues and those that apply to work for us, there are more important factors in keeping us satisfied and happy at work.

These are:

Job stability

Recently during interviews I’ve been asked more often about what customers we have, what’s our growth strategy and what are our long and short term goals. With Brexit driving further economic uncertainty employees are looking for stability.

Sadly, I’ve heard a number of times about employees taking a new job and then finding the situation quickly changes due to buy outs, new management and redundancies.

Additionally, particularly in smaller companies the rumour mill turns quickly. Ensuring employees have visibility of change and the goals and aspirations of the company will make sure you can control the information and message that gets put out there.

 Training and personal development

Structured personal development and training opportunities are a must for most career focused employees. Annual reviews are a great time to set clear objectives that meet the employee’s career aspirations but also follow the company’s strategic goals.

Employees can get caught up in the now and sometimes objectives get set aside so monthly reviews are a great opportunity to take the time to discuss how they are getting on, adjust objectives if their ambitions change direction and renew focus.

Having this focus and structure on personal development ensure that the employee feels they own their career progression and enables them to climb the ladder.

 Poetic licence

There is nothing a developer likes more than to be given free range to tinker with new technology and get the opportunity to do new things. Finding this opportunity for them to whet their creative appetite without high costs to the customer or high risks to us is a sure way of keeping developers happy. Well, that and lots of tea!

 Working environment

Ok, so I’m not saying you need to go installing a fireman’s pole or slide in your office for employees to get downstairs but having modern furnishing and an area for employees to get away from their desks really goes a long way to promoting employee well-being and productivity.

It’s also great to build relations within the team but sometimes team building exercises can feel forced and have little impact. Instead having an optional Friday lunch at the pub or activities such as games nights, climbing, laser quest or bowling have proven to have higher participation.

Participating in charity events such as ‘Giving Tuesday’, ‘Macmillan Coffee Mornings’ and maybe the local 10K race are also great opportunities to get everyone mingling whilst also raising money for charities. One of the favourites at PXtech is the Marie Curie Charity Quiz Night that always gets a large number of people putting their name in a hat to be part of the yearly team.

Most importantly don’t forget to celebrate events such as birthdays, marriages and births with a bit of cake!

In conclusion, never forget that while money is important, basing staff retention purely on wages gives competitors an easy target to beat when attempting to poach employees. By giving people multiple reasons to stay, woven into every facet of their work life, you can operate with much more confidence that employees are building a future not only for themselves, but as part of the company on a long-term basis.

Kerry Townsend, Director of Hospitality Business