Showing posts with label Management. Show all posts
Showing posts with label Management. Show all posts

Sunday, 16 April 2017

How to specify credentials to restart or shutdown a remote host with ‘net use’

I recently wanted to shutdown a server on my local network (notably a workgroup) using the Windows shutdown command but encountered an access denied error (or no feedback whatsoever).

I needed to use the administrator credentials of the remote server but shutdown.exe doesn’t accept credentials.

Using ‘net use’ to connect to the IPC$ share on remote host, you can set then call shutdown in that security context:

net use \\hostname\IPC$ mypassword /User:administrator
shutdown /r /t 60 /m \\hostname /f

In the net use command above, replace hostname with the name of your remote host (or maybe an IP address), replace mypassword with the password for the account you’re using, and replace administrator with the name of the local account on the remote host you wish to use (which presumably has the necessary rights to restart or shutdown the server).

In the shutdown command above, replace hostname with the name of your remote host, as per the net use command.

Note: Read the shutdown /? usage. The /r flag will restart the host; change /r to /s if you want to shutdown instead. Other parameters can also be specified. I also typically set the timeout (/t) flag to 0 (zero).

I call both commands back-to-back in a Windows Command Prompt, without running the console as Admin.

See below for a few more tips, links, and PowerShell alternatives.

If you’re used to operating as a domain user you may be asking why any of this is even necessary. It’s necessary in a workgroup context because the remote host has no idea who I am if I just tell it to shutdown from some other computer on the local IP network. It may be possible to an account on one host the necessary privileges on another host but I don’t know for certain and, in my limited experience, this can get hard and weird very quickly!

I used to run a domain controller on my small local network (just for fun) and all of my servers were members of a domain, which made security easy. I got rid of the DC as DHCP and other services were migrated to my internet router and to streamline things. In all regards, having one less server to manage, power, and so on is great. I’ll run a virtualised AD when I need to, e.g. for development purposes).

In addition to a media centre, I also still run a physical file server, primarily for backups. My basic process is to power on the file server once a week to backup the media centre, my laptop, etc and then shut it down again (so the kids don’t fiddle and to keep the noise down).

The backup process is otherwise seamless—the backup services on the file server and clients just pick up where they left off and run to completion without any human interaction (I use CrashPlan and would highly recommend it). I only need to power on the file server and then shut it down.

To shut down, I’d previously connect to the file server via Remote Desktop and then shut down. But that’s too hard. I can tell from the backup client on my laptop when a backup is complete so I just want to quickly shutdown the file server and go to bed.

In a domain environment, I could make sure my domain account was a member of the Administrators group on the file server and then call shutdown.exe from a command prompt on my laptop; without the DC, I need to explicitly provide shutdown.exe with the necessary credentials before actually calling shutdown.exe.

A few other notes: the file server is running Windows Server 2012 and my laptop is running Windows 8.1.

In recent versions of Windows (i.e. 2012+), I’ve read that UAC may interfere with things. You may want to turn it off but can simply add or configure this registry key (I didn’t have to):

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
Value: LocalAccountTokenFilterPolicy
Data: 1 (to disable) or 0 (to enables filtering)
Type: REG_DWORD (32-bit)

You may need to restart after making this change.

Thank to https://helgeklein.com/blog/2011/08/access-denied-trying-to-connect-to-administrative-shares-on-windows-7/ for this one. See also this Microsoft help article (ID 951016) “Description of User Account Control and remote restrictions in Windows Vista”

Others suggested File and Printer sharing must be allowed in the Windows Firewall.

I believe PowerShell offers similar restart (and stop) commands. I haven’t tried them and can’t say whether they work with the techniques described here but I believe both accept a –credential parameter.

See these references:

https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.management/restart-computer

https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.management/stop-computer

Saturday, 8 August 2009

Tourism WA CIO Position Advertised

Having worked at Tourism WA in various capacities for three and a half years, I’m currently working for my third TWA CIO. As the current CIO is acting in that position, Corporate and Business Services has decided to advertise the position again (it was advertised earlier in the year until being withdrawn after the second round of interviews). If you’re interested in working at Tourism and has what it takes to fill the CIO role—and you want to work with moi), then be sure to apply:

http://search.jobs.wa.gov.au/page.php?pageID=160&windowUID=0&AdvertID=84697

Saturday, 21 March 2009

Putting Creative Agencies on Notice

Working across a number of highly-visual, rich, and interactive web sites, I’ve had the, ahem, delight of working with several of Australia’s big creative design firms over the years. I won’t name names.

These guys have variously been tasked with building good looking sites and funky widget things; their modus operandi involves mood boards, wireframes, and giving themselves stupid titles like Web Maven and Producer. They seem to rate their development ability on the basis of their ActionScript skills and their capability (I’m guessing) to offload—er, subcontract—work to an Indian sweatshop doing MOSS and AJAX and/or hire junior devs with just enough aptitude to fool most people. Naturally they’re happy to charge thousands of dollars for something like an email template—but they’re used to that because they all come from over East. Marketing people love them because they use the words “digital” and “creative” and have beards.

Well Mr. Creativity I’ve got news for you: your development skills suck and the recession economy means most organisations will be expecting full value for the outlandish buck you charge. To wit, you’ll need to start delivering more than spiel because I’m onto you.

Some of the experiences I could recount here would come across as unbelievable but here are a few classic examples nonetheless…

Creative Agency Blunder #1

We’ve been battling it out with a particular agency from Sydney for a year now just to get a reasonably simple data-driven application built that would integrate with our existing mapping solution (which the same firm built in 2007). When we first went back to these clowns the same guys who did most of the work back in 2007 were still around and picked up the new bits… before they resigned. Fair enough, people leave places. The only problem was the application was largely built in Flash and we’d already started integrating; you’ve already read my comments on the development abilities of these agencies (why can’t they just stick to being creative? They’re good at that!!) so needless to say the code was buggy and half the functionality requested hadn’t been implemented (spec? What spec? There never was a spec…).

Back and forth we went with the replacement creative team while they effectively rewrote the existing application in HTML and JQuery, retaining bits and pieces of the Flash here and there; deliveries kept coming, poor Luke in my team kept on re-integrating, bugs kept getting found, and no one had the guts to can the project.

Naturally we had a small number of change requests as the process trundled along and we were happy to pay for those changes. But the real punch line was when we received a bill for bugs they themselves had introduced! No joke—and this after significant delays brought about only by their incompetence.

Creative Agency Blunder #2

Then there’s our MOSS developer friends, also out in Sydney. Initially they requested remote access to our MOSS environment so they could develop yet another flashy but very simple applet. I declined that one as we hadn’t worked with them previously at the technical level and there’s no way I could trust them to behave within our constantly moving code base—and that’s apart from figuring out how to expose TFS and all other bits of our environment externally.

These guys actually produced a “spec” for us, which was reassuring; it was one page, of course, but the five bullet points covered largely what would be required and I made the silly assumption Marketing, as the group managing the contract (don’t ask), would have a firm grasp on things from their end. The spec basically said “web part”, “rss feed”, “web service you’ll write”, and some mention about Flash/Silverlight/AJAX. The price tag would be 10k+ and we would write all of the backend functionality in-house so they couldn’t botch it up and we could reuse it for another part of the site. Put it this way: all they had to build was a web part with some basic animation that pulled a small amount of data from a web service we would expose—nothing more.

The first delivery—after they emailed me to figure out how to invoke one of our web services—included a user control and instructions on how to install Son of Smart Part. The control was also built to rely on session state which I believe is a joke for any big web site (the widget would be going on our homepages… and we’re sitting behind two layers of caches, which was made clear to them). Finally, all the CSS and javascript was bunged into the control itself instead of sitting in external files—surely they can at least do that bit well?!?

I sent that version back before we even attempted to integrate and they responded a few days later with v2. Rewritten as a web part, I passed it along to Matt in our dev team for integration and he soon noticed basic functionality was missing—all of the key wiz bang, essentially. As Matt had already undertaken some work to integrate the thing, we sent it back with the request they work from our modified code base as much as possible, to which they agreed.

v3 came back to us the afternoon before launch day with none of our modifications but we progressed re-integration anyway—the turn around time to raise this and wait for a reply of some form was unacceptable. Did I mention when they “tested” version 3 before sending it our way they forgot to switch over to calling our web service and seemed to be astounded at the old data they were seeing—from their servers!!! Lo and behold, this version incorrectly addressed what was missing from the first version and broke another aspect of the control.

Sigh… by this point we’ve spent as much time attempting to integrate the thing as it took the agency to build it and it’s still nowhere near where it needs to be. Did I say how simple this was supposed to be?

My advice to these agencies is as follows:

  • Define a technical specification that you understand
  • Don’t deliver subpar code—test to make sure it meets the requirements and delivers basic functionality expected by any normal web user. Value add in this area.
  • Don’t charge your customers for your mistakes
  • Reduce your rates because you’re not worth what you’re charging
  • Get with the times: Flash sucks big time and Silverlight/AJAX will slowly kill it; do what you do best (design) and hire people with the skills to deliver in whatever technology set you’re selling—not inner-city Photoshop monkeys who think they’re developers because they can write bad Javascript.
  • You’ve got to communicate to integrate
  • Stop giving yourselves stupid titles you can’t back up

Thursday, 12 March 2009

The Summary Paper

I’ve got a favourite new business document: I call it the summary paper and it reminds a lot of the book report format from third grade. I’ll claim to have invented my specific version but I’m sure there’s different names for this document depending on the project management/software development/business model you’ve adopted; no matter…

So what are the summary paper’s defining features, you ask? The summary paper is:

  • About something really important The summary paper exists to feed into a meeting; if someone’s called a meeting hopefully the subject matter is sufficiently important to warrant having everyone in the same room not doing other work.
  • Broad Include at least a brief context or history about the topic to bring readers to the same level and quickly address any knowledge gaps.
  • Specific With the context out of the way, the remainder of the paper should be exactingly specific—as always, qualify and quantify wherever possible and prefer well conceived charts, diagrams, and images that can stand on their own or at least significantly augment the text. Most importantly, the summary report should be about one single thing and that subject must inform the entire report; if something isn’t relevant to the main subject, it belongs in a different summary report. Specificity in many cases equates to authoritativeness.
  • Short The whole point is to create something approachable and easy to digest between tasks or on the train ride home. No one really cares about what you do but they care event less about that fifty pager no one will ever read because they don’t have the time or interest. Shortness is goodness because a short summary paper is also easy to adapt to changing information; when it comes time to discuss the paper in a meeting it’s easy to say “let’s take five minutes to read through this document.” Simply put, a short paper is more likely to get read. Assume your readers already know something about the subject. Aim for one to four pages and print it double-sided.
  • Enticing Print in colour and come up with a precise title that tells the reader exactly what the document is about.
  • Textual Use bullet points and tables for short lists and data. The summary paper is meant to be read so write sentences and paragraphs grouped under headings. Avoid complex tables, tables with lots of text, and bullet points in tables… Number and call out all figures in the text.
  • Fast Write it quickly before you loose focus and forget key points.
  • Timely Focus on the current state of play and how things are now—not how they used to be or how they might be in the future. As a snapshot in time, ensure the data presented is current to within a few days.
  • Decisive State problems clearly and write in clear terms. Don’t dick around with fancy vocabulary, wordiness, and bad writing. Do use a spell checker and proofread, proofread, proofread. Use an appendix of terms and abbreviations (and even synonyms) if required. Use an appendix for references is required. Don’t bog down the first few pages with titles and logos and document controls and sign offs and and references and disclaimers; do keep it simple: include the author’s name(s), the date, and a simple version number (eg. v1.0 where the 1 is the major version and the 0 is the internal draft version). Include page numbers and numbered headings for ease of reference during discussions. Use consistent formatting to create meaning.
  • Open Encourage feedback and be willing to incorporate ideas and suggestions—v1.0 should never be the final version. Incorporate feedback as early as possible.
  • Owned Limit the number of authors (preferably to a single person) to encourage ownership and clearly identify the person responsible for making updates. If the paper is eventually earmarked for distribution to senior management but was initiated by a junior, allow the junior to retain ownership—especially if continual feedback looping starts to happen. Ensure whoever initiates the paper has an existing understanding of the subject and remains engaged as discussion evolves.
  • Complete and Accurate TBDs should be avoided. Exclude placeholder sections containing no content. If critical information is required for completeness, find and validate that information. If existing information is unclear, clarify it by research (speak to others, do some reading, experiment).
  • Actionable List possible solutions—don’t wait for that to happen at some future meeting. Identify, by name, individuals required to provide information or complete tasks.

I love these papers. My experience with this approach so far has been to say to someone arriving at my desk “here, read this” and they actually do read it (sometimes standing right there) and it results in the flow of ideas I can use to make the paper better. I’ve easily got ten to twenty individuals feeding into a single piece of work and these briefs are the fastest, most accurate way to turn discussion into action.

Friday, 3 October 2008

TWATS Wiki (or implementing a wiki at work)

My dev manager at Tourism (Steve) recently suggested we implement a wiki with the intention of improving our project and software documentation and making easily accessible. He'd been involved with the launch of a wiki at a previous job and found it beneficial. 

We previously built a wiki on our MOSS-based intranet using one of the MOSS templates but it was ugly, weird, boring, and wasn't adopted by the team. This time we've gone with MediaWiki and setting it up has taken the form of a mini project with our junior dev Tim assigned the task of learning/doing the configuring. We work for Tourism Western Australia so naturally we've named the wiki TWATS (Tourism WA Technical Support). 

The three of us also sat down to plan the wiki's structure: we settled on top level categories for project documentation, third-party application/platform documentation and training, templates, and code snippets/work-arounds/etc. Our customer service (help desk) training materials will also fit in there somewhere. Tim hasn't quite launched the wiki but I'm already thinking to myself "hey, I could wiki this if the wiki were up" every time I unearth some rare bit of info (I've been doing some legacy project work recently...). 

At this point I think the wiki is a brilliant idea and building it on a trusted platform (MediaWiki) means it should be easy for the team to use--both in terms of accessing content and updating wikis. We've traditionally stored our documentation as Word docs on the intranet; a document gets "finished" and quickly forgotten about because people are too scared to touch it--it's too formal and it's "finished". In theory this should be less of a problem with a brief wiki page. With the wiki being broadly accessible (eg. http://twats or http://wiki) and editable by nature, I'm hoping it will also get read and that should lead to the content being maintained as required. 

Wednesday, 6 February 2008

Consulting/Contracting and Peter

So in case you haven't noticed the change to my profile I recently became a full-time contractor. In addition to working previously as an analyst programmer for Tourism Western Australia, I started consulting half a day per week to assist the Department of Education and Training with the migration of a number of sites to MOSS 2007. Last August I started looking to move on from Tourism to get out of government and the associated politicking, make private industry dollars, and extend myself a little bit (fortunately I was smart enough to turn down an offer from Commander). The consulting gig proved contracting isn't so bad so when a Developer Coordinator contract position was advertised back at Tourism I couldn't help but take the plunge.

Working as a consultant for DET is quite rewarding. SharePoint and MOSS actually behave in the DET environment. While they've gone down the customised branding path they've also stuck with OOB web parts so to date I haven't faced any really tricky problems; as the 'expert', I'm in a position I like to be in. Apart from that, a single developer has managed to put together three sites in a around three months so it's good feelings all around. http://www.westernaustralia.com/ and http://www.tourism.wa.gov.au/, by comparison, took nearly eight developers (on and off) and half the organisation a year or more to launch. That said, we were one of the first branded sites to roll out on the MOSS 2007 platform and we had many, many, many technical problems with an early MOSS beta.

I'm three weeks in to my contract at Tourism and I've been surprised at the differences not only between quasi-permanent employment and contracting but at the differences in conctracting for different agencies. I'm also reading The Peter Principle at the moment and trying to assess whether this Tourism "promotion" has allowed me to arrive at my level of incompetence!

Apart from the 40-hour week versus a 37.5-hour week and being conscious of the fact I'm no longer entitled to sick leave, public holidays, or anual leave, I'm also keenly aware I really need to earn my keep now--in other words, there's no room for incomptence. I was on a fixed-term public service contract (salary, holidays, sick leave, etc but with a finite contract term of two years) as an analyst programmer and was cheap to employ; as a contractor I earn a lot more money and cost my employer a lot more money. More importantly, my contract runs for a mere six months and in that time I have to prove my worth by working to a controlled work package to produce the expected output. Luckily I've been in a position to define the schedule for delivering that output.

At Tourism I work directly for the CIO and I'm tasked with fixing content deployment and some other big-ticket items. The Tourism CIO is an alright guy but he's reasonably new to the organisation and intent on running a far more controlled IT department than his predecessor. While I welcome the change, moving from the previous free-for-all situation to such a formalised, process-driven environment is a swing back in time for me as a former EDS employee. I know my abilities and know I will deliver what I'm asked to deliver (process or no process) so to have a really hands-on superior managing me so closely--at least initially--has felt overbearing at times. EDS was very formalised and process-driven but my managers trusted me and as a young go-getter I never felt the opportunity to become incompetent.

It's unfortunate that despite coming back to work for the same organisation I have to prove myself once again to the new CIO (our previous CIO left a year earlier). Realistically, I'm doing very different work in my new role so I'm happy proving myself to everyone, at least a little bit. I've also been paired with an architect mentor to assist me in making the transition. I'm comfortable with the mentoring arrangement and looking forward to learning as much as possible but I'm also confident in my own abilities, I know the software, and with such a shortage of developers in Perth I'm simply the best person for the job. I don't mean to sound arrogant but in reality I've been doing a lot of what's required of my current role for my entire career of four years.

At the moment this adds up to me questioning my abilities and desire to produce quality output. Sure, I need to win the new CIO's trust and to do that I have to deliver what's expected of me on time. I'm also finding I need to win my own trust and prove me to me.

All up, I'm enjoying consulting. Like most people (I assume), I'm happiest when I'm productive and at the moment I'm really pushing myself to be productive so I don't fall behind schedule. At the same time, I'm thriving on the added responsibility and despite being a developer type, I really love being outside my box and engaging with the team and the organisation. I've definitely found the lack of interaction with folks over the past two years a big downer.

Either way, it will certainly be interesting to see how I feel about all this in another six months!

Sunday, 16 December 2007

Senior Developer Interview Questions

We had a couple of senior developer tenders go out at work recently and when it came time to interview the applicants I was asked to put together a test to flush out the wannabes. I've been on the receiving end of these tests in the past and considering this test would be written in the twenty to thirty minutes before a three-panellist interview, I thought I wouldn't be too hard. I'd say most of these questions are analyst programmer questions, if not junior dev questions, although I did through in a few tricks to gauge experience and I also left some questions fairly open in an attempt to understand the applicant's though process. If the applicant couldn't complete the test in the time period given, that would be okay too.

I've included the job criteria headers to help you figure out what I was looking for in each answer; not every question fits within a specific heading. The headings were printed on the test sheet.

The Perth .NET developer market has been on fire since I arrived two years ago and SharePoint work is going through the roof; as a result, we only had a single applicant put forward for the two or three tenders that went out. When and if we have more people across this test I'll attempt to generalise the results and post an update to this post on the effectiveness of this test.

I haven't included the answer here because like I said, some of them are fairly open and a lot of them should be fairly obvious if you've done an undergraduate CS course.

At least 5 year of software development experience and at least 2 year experience developing MS .NET applications

  1. Describe the difference between the execution environments for C++, C#, and Javascript
  2. Is C# a weakly-typed language? Why or why not?
  3. When should performance optimisation occur?
  4. List three problems with this code. Bonus: how could it be improved if you were using .NET 3.5?

    private string someVar = 1234;

    public string SomeVar
    {
    get
    {
    if (string.IsNullOrEmpty (someVar))
    {
    someVar = “5678”;
    }

    return SomeVar;
    }
    set
    {
    someVar = val;
    }
    }

  5. When would you mark a class with the internal visibility modifier?
  6. What’s the difference between a struct and a class? Are structs allocated on the heap?
  7. The property invocation below may return a null result. Rewrite the code to prevent the second line from throwing.

    object result = Employee.Address;
    result.ToString ();

Working knowledge of full lifecycle development methodologies, process and standards and project management; sound knowledge of object oriented system design and development...

  1. List one section heading you might expect to find in each of the following documents:

    · A functional specification
    · A technical specification
    · A UAT test case
  2. List three tasks you would complete before checking in a new class to the Tourism WA source control system.Name each component in the following diagram and briefly explain the relationship between Vehicle and Door:
  3. What is a use case?
  4. Briefly describe the difference between a class, an interface, and a type
  5. Briefly describe a software design pattern you’ve used on a past project and indicate how it helped or hindered code maintenance. Alternatively, describe a design pattern employed by ASP.NET.
  6. After designing a new system, your project manager asks you to estimate construction time for yourself and a junior developer. This is the first time the department has built this type of system and you haven’t previously worked with the junior developer. List three techniques you would consider to ensure your estimate is as accurate as possible

Solid understanding of internet protocols, web development mark-up languages and web standards...

  1. Draw a simple diagram showing the location of a reverse proxy in relation to a database server, a web server, the internet, and a client
  2. Using only inline CSS and DIV tags, write the HTML to produce a three-column, one row table (don’t worry about borders). Don't use tables.
  3. Will the Hello World! text be rendered green, red, or blue by the browser?

    <style>
    span { color: green }
    #makeItRed { color: red; }
    .makeItBlue { color: blue; }
    </style>
    <span id="makeItRed" class="makeItBlue">Hello World!</span>
  4. List three key components of this schema fragment. How many ReservationRequest elements are allowed in an XML document validated against this schema?

<xs:element name="Control">
<xs:complexType>
<xs:sequence>
<xs:element name="ControlID" type="xs:int" minOccurs="0" />
<xs:sequence minOccurs="0">
<xs:element name="ReservationRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="InDate" type="xs:dateTime" />
<xs:element name="Period" type="xs:int" />
<xs:element name="Adults" type="xs:int" />
<xs:element name="Children" type="xs:int" />
<xs:element name="Infants" type="xs:int" /> </xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:sequence>
</xs:complexType>
</xs:element>

Sound knowledge of the Microsoft .NET framework class libraries, ASP.NET and Web Services

  1. What improvements does the .NET 2.0 System.Collections.Generic namespace offer over the System.Collections namespace from previous versions of the framework?
  2. List two key differences between a user control and a web control
  3. Compare the .NET application cache and the ASP.NET output cache
  4. Write a call to the Format ( ) method of the String class to return the string “Sam is 38 years old.” Assume you have a variable declared and initialised as follows:

    int age = 38;

    Give an example of a situation when you would use a StringBuilder instead

  5. Describe the difference between application state, session state, and view state. Discuss session state in relation to scalability and suggest an alternative.
  6. List two techniques to secure web service communication on the internet

Ability to perform unit and integration testing...

  1. What purpose do the following serve when debugging a section of code:

    · The F11 key on your keyboard
    · The Immediate window

  2. Briefly describe the concept of “regression testing”
 

Saturday, 15 September 2007

Potluck 'Round the Hearth

While discussing the issues of public space for resources in Peopleware, the authors quote from Christopher Alexander's A Pattern Language:

"Without communal eating, no human group can hold together. Give each [working group] a place where people can eat together. Make the common meal a regular event."

The authors go on to highlight the relationship between shared space in broader societal terms (the home, in particular) and the office workspace.

As so many of us spend a great deal of time and a large portion of our lives at work, I believe strongly in extending my definition of "family" to include the people I work with. This fits naturally with the hierarchical structure found so often in work places: my immediate circle of co-workers becomes my brothers and sisters; my managers becomes parents, grandparents, uncles, and aunts; other colleagues in the organisation become cousins and second cousins.

From this mindset (and, admittedly from a mindset that includes fun and enjoyment!), I introduced my team to the potluck lunch about a year and a half ago. The potluck concept was not my idea: I attended a party held outside work by a colleague from my previous employer and the party was themed around the potluck; the people and layout of the workspace of my new employer simply allowed me to suggest we bring the team together on a regular basis and everyone bring a single dish of food.

Although we don't measure many things at Tourism--let alone productivity increases, the potluck lunch concept has proven successful in general. At the very least, it's a great opportunity to sit back with my work family, indulge in new and interesting food, and have a chat... a scheduled group downtime. It's also been an interesting way to introduce new team members to others in the office and give them a sense of how we work and what it feels like to be a part of our team.


We aim for a monthly potluck lunch and usually go in for some kind of theme. When our first potluck was held, we had a very diverse team and everyone brought food representative of their home culture. We'll also hold a goodbye potluck when someone leaves the team.

The rules of potluck are few and simple:
  1. Each person only brings enough food to feed one to two people (or a single dish);
  2. Each person tries their utmost to make something at home the night before--food purchased the day of the potluck is usually a rush job and tends to be deep-fried;
  3. Alcohol is a suitable food substitute (but this works at Tourism).

We don't usually plan who's bringing what--it usually just works out. As we do have a few vegetarians about we try to cater for them and generally try to arrive at a balance of savoury vs sweet (dessert is always nice!).