Hang on a second… A Starcraft post filed under "programming"? What sort of organizational shenanigans are going on here, Shamus? Is this some kind of trick? I'll tell you: Last week I was pondering the mechanics of a Starcraft II rush. I wound up making the hilarious mistake of assuming it would be an easy thing to analyze with a bit of code.
A "rush" in Starcraft is where you forego building workers, constructing defenses, or expanding. Instead you begin the game by building as many of the most basic army unit as you can in the hopes of crushing your opponent before they have anything on the field. A rush is usually considered an "all in", because if your initial attack fails then you'll be at a massive disadvantage. You don't have many workers, or defenses, or expansions. All you've got is this small handful of units. Your opponent will be far more wealthy than you, and will be able to out-spend you over the next five minutes or so.
Trivia: The rapper (?) in that song is Husky, of BRONZE LEAGUE HEROES fame.
Setting aside the jokes, the memes, the flame wars over game balance, and arguments over race: Just how much is the advantage of rushing, and how far behind will you be if you fail? What's the damage, in a total numerical sense? How many units will you be ahead, and assuming there's no game-ending engagement how long will it take for your opponent to pull ahead of you? I'm sure a pro player could intuit the answer just from the sheer volume of games they've played, but I wanted to see the breakdown on a chart where the rest of us mortals can visualize it. I so decided to write a little program to figure it out.
The cost of everything is right there in the game: The cost of the buildings, the time to construct them, the cost of the units, etc. It's just like calculating compound interest, right? Just plug the numbers in and see what it gives you.
About twenty minutes into the project I realized I'd greatly oversimplified the complexity of the problem. About two hours later I realized that even my twenty-minute re-assessment had been overlooking important details. What was supposed to be a quick, slapdash problem wound up taking the better part of a day and at the end I have a very strange bit of code and a graph that may or may not be useful.
But before we look at the data, let's look at how we get the data.
For the purposes of our test, we're going to be looking at a series of hypothetical Terran players. Zerg have to worry about larvae spawn rates and Protoss have more expensive units. In the former I'd have an extra layer of complexity to worry about that might obscure the thing I was trying to observe, and in the latter it would give our chart less granularity. So what we're doing is making a program to simulate a Terran player that will create some number of workers, construct appropriate supply depots, and then build one or more barracks structures that will begin pumping out marines as fast as possible. Also note that in the parlance of the game a barracks is often called a 'racks. Because two syllable words are for people with too much free time.
Players identify early building strategies by how many workers you have when you begin building your production structures. So an 8-racks means you begin building your first racks once you have 8 workers on the field. (You actually need a supply depot first. I won't get into it here, but for people familiar with the game I just want to note that I did take that into account.) A 10-racks means you build the barracks once you have 10 workers. You begin the game with six workers, so a 6-racks is the lowest you can go.
We keep the whole thing focused on simple barracks units. We ignore gas and we ignore expanding. This is complicated enough as it is.
The first thing I needed was some basic numbers on how fast you can acquire minerals with a worker. Like everything else in this project, this was less obvious than it seems. In the game, workers walk from the base to the minerals, spend a few seconds chipping away at them, and then walk back to base to deposit them in the "bank" where they can be spent. Repeat. This means that harvesting from nearby mineral patches is very slightly faster than harvesting from distant ones. If another worker is already harvesting from the desired mineral cluster, the worker will move to a free one. If there aren't any free clusters available, it stands in line and waits its turn. This means that there's some diminishing returns when you add more workers, and at some point more workers will do nothing to improve the yield.
This is really messy and involves way more complexity than I want in my program. I'm not interested in re-creating the precise movement mechanics of the game itself, and attempting to do so would run the risk of oversimulation. I just want a timer that counts seconds and minerals. I don't want to have to simulate walking workers and worry about base layout and AI pathing.
The first question that seems obvious (but isn't!) is: How many barracks do I build? If I'm doing a 9-racks, do I need to build one bunker? Or two? Three? If I build too few, then money will pile up and I won't be as strong as possible. If I build too many, then they'll sit idle most of the time and the resources spent on the barracks could have just been spent making more marines.
A barracks makes a marine every 25 seconds. Which means a single barracks produces 2.4 marines a minute. A marine costs 50 minerals. So it costs 120 minerals a minute to keep a barracks working at capacity. If I'm doing a 10-racks then I'll have 10 workers who will bring in 420 minerals per minute. That's enough to keep 3.5 barracks going. Hm. So what the AI (it does seem less like I'm writing numerical analysis and more like I'm writing AI at this point) will end up with is 4 total barracks. The first three will work continuously and the fourth one will be idle about half the time.
Wow. This question is more complicated than the original question I was trying to analyze. To keep this problem from getting away from me, I decide to simplify. I have it favor building barracks sooner at the risk of forgoing marine production in the short term. I don't know if this is optimal, but finding the optimal strategy could take bloody ages and I don't think I need to. As long as all of my tests use the same strategy we should have a pretty good apples-to-apples comparison.
This is a lot of code. I write a system to run a theoretical base, tracking income, counting off units, and building structures. Then I run into the next problem.
This is what a 6-racks looks like. We're two and a half minutes into the game and we've got our first marine on the field.
As I mentioned before, supply is an important concept in the game. You need to build a supply depot for every 8 small units (workers or marines) on the field. A newbie player will forget to build depots until they run into the limit, at which point all production must halt until they can add a depot. It wouldn't make for a good test if my program made this same mistake. So, when should you build a supply depot? Build it too soon, and you'll tie up resources that should be spent on pumping out marines. Wait too long, and you'll get supply blocked. Either way you can choke off production.
Players usually eyeball it at first, and as they master the game the supply depots become a natural part of the rhythm of their build order. But since we need to maximize production to make this test work, we need to build our depots at exactly the right time. It takes 30 seconds to build a depot, so we need to begin building one 30 seconds before we need it.
I don't want to get too fancy with this, and this can get annoyingly cumbersome if I wanted to be precise. (If I have to start considering partially-built barracks and measuring the time left on current marines I could end up working on this for the next couple of days. It's not hard code to write, but it's murderously slow and fiddly to test and once again would complicate something I'm trying to keep as simple as possible.) Thankfully, the time to produce a marine (25) and the time to build a depot (30) are very close. I should be able to look at the number of barracks I have and throw down a supply depot when my supply is that many short of the limit. (Plus one, to give me a slight buffer. Building too soon is better than too late.) If the current supply limit is 19 and I have two racks going, then I should build the depot when (marines + workers + 1) >= 17.
This doesn't actually work very well. In some cases, the 12-racks might out-perform (say) a 13-racks, both short and long term. That doesn't make sense.
Eventually I realize that my program is still oversimplifying things. I see that in certain builds, the racks are spending a lot of time idle because the AI is broke. It's built too many barracks and crippled its production.
It turns out that marines do not cost 50 minerals. Oh, that's what they cost you up-front at the barracks, but in the long run you also need to account for the depots you'll be building. A depot supports 8 marines, so each marine is 50 minerals plus 1/8 of a supply depot.
So how much does a depot cost? Well, up-front they cost 100 minerals to build, but remember that a worker must stop harvesting for 30 seconds to build it. (For the sake of my sanity, we're going to ignore the time it takes the worker to walk over to the building site and walk back when it's done.) So a depot costs 100 minerals plus it causes you to miss out on 24 units of mineral gathering. The total cost of a depot is 124, divided by 8 marines equals (rounding up) 16 minerals. So the cost of a marine is actually the base 50 plus this extra 16 of sunk costs for a total of 66.
Using this new value, I basically un-kink my production pipelines and all of the builds operate at near maximum capacity. I play a quick game of actual Starcraft 2, and the points of my 6-racks seem to roughly line up with the numbers I'm getting out of my program. As far as mineral values and marine counts, it's all acceptably within bounds. I don't guarantee my program is correct, but I'm reasonably sure the values make sense and the rules are being properly enforced. (It's not spending itself into negative money or building units despite a supply block.) If there are flaws, they're most likely inefficiencies in my AI and not in the simulation. The values we're getting should be good enough for the purposes of our analysis.
I have the simulator run various builds and save the unit counts to a CSV file that I can load into Excel. Here is the build for a 6-racks compared to a player that aims for a more reasonable team of 16 workers.
This is the first ten minutes of the game. Our green player was aiming for 16 workers and red was going for a cheesy 6-racks. We see that red gets their first marine at around the 2:20 mark. Green doesn't get their first marine until a full minute later. Note that it would be foolish for red to charge green's base right when marine #1 pops out. Green has 13 workers at that point. Workers are terrible in combat, but 13 of them should be able to swarm and kill a single marine with minor losses.
But what if red waits another minute? By 3:20 red has four marines and green has zero. Right at this point in the game, green has finished one barracks and has a single marine in development. At the same time, green is building two more racks, one of which is nearly done and the other is only just started. Still, the rushing player has 4 marines, which should be able to mow down all the green workers. That's a guaranteed win, right?
It takes anywhere from 30 seconds to a minute to cross the average two-player map. The rushed army of four sets out from their base at 3:20. But by the time they arrive it's 3:50 and green has 3 units on the field. 4 vs. 3 is still a win for the rushing player in an open fight, but red is likely fighting through a choke point and up a ramp to get into the base. When the fight is over red will have one or two injured marines, and the 16 workers should be able to mop them up. Red's reinforcements are streaming in, but the rushing player doesn't have the production capacity to sustain it. Red has two barracks and green has three, with number four on the way. Green has more income and more barracks. There will be minor skirmishes for the next minute or so, at which point the defender will begin to pull ahead and the rusher will never catch up.
You can think of production as a slider between aggression and greed. The sooner you attack, the more aggressive. The later you go, the more greedy you are. Greed will win over aggression in a long game. The trick is that you have to survive long enough for the greed to pay off.
Click to expand to some kinda readable size.
One final little bit of data is the chart below, which I generated for debugging purposes but might be kind of interesting to the reader. It shows the efficiency of the simulated builds.
Marine count is how many marines the player had on the field after ten minutes.
Average minerals is how much it had in the bank, on average.
Time supply blocked. Not a problem now, but during testing I had a lot of trial-and-error figuring out how to avoid this.
Production wasted is how many seconds the barracks were idle. If there are three barracks and they all sit idle for a single tick, that counts as three seconds of waste. This mostly happens in situations where the player has enough income to support 4.25 barracks and so barracks #5 spends 75% of its time idle.
How many barracks it built. (How many barracks it planned to build.) These numbers really only apply in shorter tests.
Well, it was a lot of work and in the end we just confirmed what we already knew: Rushing only works because it's used rarely.
In a real game, people that fall to rushes are usually people who got a little too greedy. Instead of getting out those first couple of marines (or other starter unit) they built upgrade facilities, expanded, and invested too much in technology and too little in defense.
Given that this project was not properly thought out ahead of time, the source for this is pretty rough. Still, the source code is available if you want to mess around with it. It's a handful of class definitions all crammed into a single .cpp file, because I find it obnoxious when people hand out tiny and self-contained 500 line programs spread over three modules and header files. However, if this project was going to grow beyond this point the next order of business would be some kind of multi-file organization.
So this shows that rush vs rush is no good, but inquiring minds want to know what's the most efficient rush strategy assuming your opponent is a little slow on the defense?
You can't really find hard numbers (it probably depends on the matchup quite a bit), but the optimal strategy is usually to go back to focusing on your economy once you have your rush force – any troops arriving after the initial fight are unlikely to make a difference (you've already won or lost the rush by that point), but even if you lose the rush you could have crippled the other guy's economy just as much as you crippled your own (quite likely if they were just starting to produce troops when you showed up, and you were able to kill a lot of their workers). Getting straight back to your economy instead of throwing good minerals after bad means you're still in the game.
That's WAY too much complicated math for me (this is why I'm terrible at competitive Starcraft), but I will say that rushing is a totally awesome strategy against the AI in earlier RTS games like Command & Conquer: Generals. Some factions like the Global Liberation Army (GLA) have units that are structured in a fashion that you can easily rush the enemy base with 1 basic infantry (to capture buildings) and 2 rocket troopers (to kill enemy vehicles, especially the enemy's initial worker bulldozer, which cripples his production), and the flat-bed truck you loaded those infantry into has a mounted machine gun in the back that will massacre enemy infantry the enemy tries to produce to stop you.
Reminds me of the old "Emperor, Battle for Dune" where rush was THE go-to tactic, especially in campaign.
Everyone started exactly the same: an MCV (mobile construction vehicle) and some units. Once you got to the second mission, you started having some anti-vehicle capabilities, at which point it was a no-brainer to send your initial troops to the enemy's spawn location to go kill the MCV while you quietly started building. Given that there was a time-lag between the beginning of the map (where you started on sand) and construction (only on rocky plateaus, because of sand-worms and such) it was pretty easy to cripple the AI completely within the first few minutes.
– tick: worker brought some money home, hey i have enough money to build this barrack, let's do this and recalculate the money ticks coming after because i have one less worker.
If i may be so bold, i'd like to know whether you could simulate a bit of micro-harrassment to disrupt the workers of the other player.
For example the 6-rack player could try and disrupt a bit of the production, hence lowering the overall shape of the 16-rack player; It could be simulated by lowering either the amount of money during a period of time, or the worker count.
I'm asking this because i've been seeing harrassment tactics on the husky channel that look terribly effective (workers killed, or pushed away from the mineral line) yet don't seem to provide any overwhelming advantage even though it looks like they should boost the player harassing.
I get the idea that harasment of the mineral line only works in certain tiers of starcraft. On the lower end of the scale (bronze) the harasment takes far too much attention from the harasser in terms of micro that his economy begins to slip.
On the higher tiers (Gold+), the opponent is capable enough to deal with it and likely won't cause as much. The mid-rage is where I see this working, but I too would like to see the "math on this" as it were.
Actually harassment of the mineral line is done at high levels, including pro league and tournaments, pretty much all the time. Terrans seem to do it the most, because they can get medivacs (dropships with healing beams) fairly quickly and drop marines, mauraders, and/or hellbats, then pick them up when defense arrives. Protoss can do warp prism drops or warp-ins (teleporting units from the base production buildings to the location of the warp prism). Zerg seem to do it the least, usually using mutalisks or (on very rare occasions) overlord drops.
Basically, even a pro level player has to respond to harassment by pulling workers from the mineral line, bringing back (or creating new) army units, building static defenses (missile turrets, spine and spore crawlers, photon cannons), and so forth. It forces them to focus on the harassment (at least partly), can kill several workers if they mess up, and generally just helps the harassing player keep their enemy on the defensive/distracted while they build their own economy/move their army out.
In the recent World Cup Series (WCS), the terran players did so much "drop play" (using medivacs to drop attacking units on the mineral lines, then picking up and repeating) that it actually got kind of annoying to watch, at least for me. It was an extremely rare game when a terran player wasn't doing multiple drops, often at the same time.
That article also was the first thing I thought of when I saw Shamus' post.
Then you'd introduce an extra input, "rush at x marines". Your inputs are then how many workers to build barracks at, and how many marines to rush at. Your fitness is whether, after the rush is over, you are ahead of or behind the enemy.
I also was wondering about the harassment. You said it's a bad idea to send a lone marine against all the SCVs, but with a range advantage and good micro it should be perfectly safe (unless SCVs are faster, I haven't actually played), and SCVs either have to be pulled off the line to chase it off or they'll die.
The SCV's can and will surround the marine with some good Micro on the opponents side and kill it. Usually you don't rush with Marines though.
Either you try an SCV/Drone rush (Which is most effective as a zerg as they can have 2 drones over the limit with the extractor trick) or you actually put down your racks near the opponents base, reducing the time your marines need to get there.
But if the marine retreats immediately (like, right when they come off the line) are they fast enough to catch him?
Or are all the ramps designed so harassment means the non-harassed SCVs can reach it first?
The ramps give higher sight, meaning that when the marine is down he can NOT see what is up the ramp. Which means the SCV's could ambush him when he pays no attention.
Oh Gods. I just love when cheese fails. I never have been one for StarCraft PVP games and always prefered to play against bots.. but you can learn so much just by watching the commentary.
Your reasoning is sound, Syal. FYI SCV's are faster than marines, as are the workers of the other two races. Now that I think of it, that's a crucial aspect of the early game balance, as marines oherwise would be able to 'kite' (shoot, run back, shoot, run back) workers all day.
As Anaphysic says that's the wrong fitness function.
What actually matters is having numerical superiority in the opponent's base for the longest time.
In AoK, where I was more plugged into the community, most true rushes relied on forward building (and everything was called a rush because of a shift in the dominant strategies) You would walk a worker all the way across the map to build a barracks because the infantry walk times were more important than the lost work and delay in getting the barracks built. It's a very different game, but the SC Terran analogue is building the barracks in your own base and flying it to the enemy, which requires no additional worker time. I'd suggest that (taking however much barracks time it takes to move the barracks across a 2p map) as an additional mutator.
SCVs move MUCH faster than flying buildings do (three times faster, in fact), so it's much better to build to build a proxy near the opponents base than to fly your barracks towards a proxy location :/. You lose some minerals, but gain a lot of time.
Very cool :) In order to get it to compile on Linux I had to add #include "cstring". I also changed the filepath of the output files to remove the e:, I guess you were writing to a specific drive? If anyone else on linux wants to play with it, this should work "g++ SCV_Ready.cpp -o scv_ready.exe", then ./scv_ready.exe.
There is a strange thing where the number of marines is not being printed properly; (10:00 c�BbB��B���B�B����_ Marines:) but the number of SCVs and minerals is.
Very cool. As someone who has been quite interested in this sort of simulation in SC, gonna post a couple of things.
1) It was *physically* painful to see you type 'racks' over and over.
It's 'rax'. That is the shorthand! What's the point of a shorthand that's 50% longer than it needs to be to uniquely convey the concept??
2) The accuracy of your simplified model breaks down *sharply* after the completion of the first barracks, to the point of meaninglessness, as the defending player – and quite often a rushing player – will create an 'Orbital'.
1) They can 'scan' an area of the map for instant vision. This is not relevant early-game.
2) They can spend 50 energy to 'call-down' supply. This *instantly* creates a supply depot, without spending any minerals, without using a worker in any capacity whatsoever. The only caveat is they must have an existing normal supply depot that has not already had call-down used on it.
3) MULES. Mules are the 3rd spell. For 50 energy, terran creates a super-worker called a MULE. Mules harvest minerals *several times* faster than an SCV, and they have the unique ability to dual-mine a mineral patch that is already being mined, so no waiting in line and they will always mine at maximum efficiency. A Mule lasts 30 seconds then dies. It takes slightly less than this for the Orbital to gather 50 energy, so you will usually have 2 Mules per base operating for a few seconds per cycle.
A single Mule is worth FOUR (4) SCVs. This means the Orbital Command pays for itself almost immediately, so it is very, very rare that any build, even a rush build, would not get one.
Thus, the longer a player goes after barracks completion without making an OC, they CRAZILY amount behind they are economically than someone who has.
I spent an entire season doing 9 rax rushes against protoss, and my build used a supply-call-down and a delayed Orbital (after 3 barracks) to get the rush to their front door in the few second window where they were vulnerable, and I did a LOT of investigation into this sort of thing – isn't it just astounding how such a simple small part of the game is so profoundly complex??
My post has a typo, MULES last 90 seconds not 30.
Also MULEs do not take up supply.
True about the MULEs, but given that this analysis was looking at rushes, it's somewhat irrelevant, no?
It's relevant because any player not going for a blatant cheese play is going to get an orbital after their first barracks, so that needs to be factored into Shamus' calculations. It does make a huge difference–it means Shamus is overestimating how many Marines a macro player will have early on, while simultaneously underestimating how many Marines they will have later.
Probably also worth factoring in the need for simplicity as regards this "little" project, as referenced several times in the post! I'm pretty sure Shamus could spend most of the rest of his life on this if he tried to account for every possible nuance … before realising on his deathbed he'd forgotten the early Reaper harass.
That's not really a small nuance though, it's going to have a large effect on the outcome. Sure, more economy is still going to come out on top in the long run, but that's not what's being tested for. If the rusher's advantage is larger at the 3 minute mark, or extends past the 5 minute mark, that doesn't just change the end result; it is the thing being investigated!
Well, the conclusion he comes to is how bad rushing is.
But, there are some rushes which include supply drops and mules.
Shamus is also not taking into account one other thing: the canonical Terran cheese is the proxy 2-rax. You build 2 barracks out on the map close to your opponent, removing the 30-60s rush distance and thereby significantly reducing the defender's advantage.
Still, this is very good analysis. I like that the break-even point on Shamus's graph is at the 5:00-minute mark–it matches up with general wisdom that cheese and other 1-base plays generally must hit before the 6:00 mark if they're to have any chance to succeed. And the whole sliding scale between early aggression and greedy expansion is the entire basis of early-game strategy, so it's important to think about. Obviously this kind of analysis needs to be coupled with in-game experience to be useful, but it's still really helpful to run the numbers to see where things should line up.
Proxying wouldn't remove the rush distance, it would just front-load it. You still have to get the SCV over there. (At least with regard to the first wave; a second wave would definitely benefit).
This isn't correct–there is nothing stopping you from sending your building SCVs early so that you start the proxy rax at the same time you would start them in your base (i.e. exactly when you have enough money for them.) That means the rush actually hits the base that much sooner. Otherwise there would be no reason to proxy.
I don't think including all that was strictly necessary, since as Shamus said this comparison was apples-to-apples. Maybe he COULD factor all that in but it's unlikely that it would have much of an effect on the relative strength of the rusher vs the defender.
And things would get even more complicated if you would take into account proxys(is it better to have all the marines walk the map,or just one worker that will then be used only for building from that point),pulling in your workers(4 marines vs 3 marines and workers is a definite loss,but 4 marines and workers vs 3 marines and workers can be a win,also is it better to pull all your workers or leave a few to mine),and scouting(what if the map has multiple spawn points,and you pick the wrong one).Rushing does seem deceptively simple,but it is a very complicated thing.Less complex than doing a full game,but still very complex.
Still it is nice to see some actual numbers behind the things.
Well done, and thanks a lot for the info!
I bet Blizzard themselves have some similar (but much larger) piece of code and use it for balancing purposes.
2.: Advanced cheese: Don't just rush with a handful of marines, send a worker with them to build a bunker just outside the opponent's view. Then a very small amount of workers can cause a nice amount of damage, even if they're not winning the game.
Ohh, and 3: Depending on your micro abilities, even if you have equal numbers of marines as the opponent, if you manage to kill a bunch of workers or delay a supply depot, that's already helping.
But as I said, that is entirely beyond simulation.
Hmmm… there's quite a bit of custom maps/games possible with SC2 — there isn't by any chance a way of coding one's own AI for the game and have AI-only tournaments? Because that would be awesome, and it would also reveal a lot about the limits of what's theoretically possible in the game.
Completely possible, here a video of a little "AI", microing zerglings to avoid siege-tank splash-damage.
probably should've linked to the video, eh?
Resource cost and algorithm complexity.Sure doing it for just one task (avoiding splash by a bunch of zerglings) is not that difficult.But doing that for all the units,plus doing a bunch of other similar tasks,on top of everything else the ai already does,is next to impossible.
Nevertheless: one impressive feat, even though it's "only a machine", isn't it? I'd have liked to have seen this kind of micro from the squids in Matrix:Revolutions-would have been a way more awesome battle, or not?
Btw: it reminds me of a friend of mine who used to hone his skills by programming AIs to train playing against common Bnet strategies. It was indeed pretty useful-way more useful than the standard AI opponents.
Amazing! That video made me smile!
If that exists, there should be an SC2 AI tournament somewhere, or at least some time soon, I'd hope.
That said, I still think it's impossible to make broad statements as in Shamus' post about whether one strategy or another is better while taking into account such fine-grained information such as splash-damage avoidance micro. Because in the end, the result will depend on how well you can do it compared to your opponent, and who gets lucky by scouting the right way and so on. You might be able to derive probabilities (after some expensive monte-carlo simulations with AIs) for perfect players or one very specific skill level (which would therefore needed to be materialized in the form of an AI), but that would be it.
…and such results would be moot quickly because human creativity. In SC2 the metagame is almost as interesting as the real thing. Tactics and countertactics, and the occasional WTF tactic in between (oh, how I love those) can and will ruin any battleplan.
The only thing that is roughly predictable is, as Shamus did, macro analysis within a timeframe during which your opponent leaves you alone.
An AI competition for Starcraft 2? Dunno.
BWAPI is a C++ API for interacting with Starcraft, and there's a tournament for pitting AI modules written with BWAPI against each other.
The 2010 competition was won by a muta micro robot called the Berkeley Overmind. This is worth seeing.
Anyways, wonderful article. I remember trying something similar in the past, but I stopped quickly after realizing how complex this stuff get.
It's a really impressive soft that modelize everything rigourously, including stuff like MULE, larvae mechanis for zerg, chronoboost etc.
You specify a benchmark, say 10 marines with stim, and scfusion will calculate the fastest build order to get to this benchmark (5:43:63 in this case). It's very fun to toy with to find the most dangerous rush.
Whoa, I had no idea that the 7RR was discovered by a GA. That is one of my favorite openings when I play Zerg.
I'm gonna have to play with that program. Hope it's been updated for HotS.
BUT ALSO, the zerg macro mechanic means that larvae become available in large amounts after a queen is produced, *effectively making zerg worker production exponential* instead of linear like the other two races: More workers produced means more workers can be afforded, limited only by the supply cap and the zerg needing to start producing units.
Can I suggest you might use Protoss to simplify your model, since protoss buildings have zero building time for the worker (he starts the warp then can go back to mining), and chrono boost is a lot simpler to model than MULEs.
Wow,thats such a cool tool.Thanks.
There are people who have been braving the complexity of early build calculations – the genetic build calculators have to take into account all the factors you mentioned and *many more*.
While these are build calculators, not AI in any sense, they highlight the weirdnesses a SC AI would have to embrace. When the infamous 7RR and 5RR (seven-roach-rush / five-roach-rush) builds were calculated, the genetic algorithm determined that a a point during the build you need to make three overlords at once. This seems totally counter-intuitive in-game, this build would simply never, ever have been created by a human. The supply timing works out however, shaving 15-25 seconds off the fastest rush build ever before made.
I dont know one thing about starcraft. But the rush strategy might be about getting fast win/loss. If you can get one win out of 10 time in less than 2 min, that mean you do better than a player having a win every 20+ minutes.
Yeah, but for every game you don't win, you lose. Your ratio of wins/losses would go down severely, and I think that's a whole lot more important than simply wins/time or total wins.
*sigh* Calling it now: Starcraft 2 will be the next season of Spoiler Warning. /Somehow/. I mean, it's even creeped (badumtish) its way into Programming.
Also, Shamus' next book will be about Starcraft 2 matches.
Great. I prefer RTS games to FPS ones. Too many gaming sites concentrate on first person games, and I would like to see a lot more strategy action going on.
I can't wait to see Josh drone-rush an established base.
I'd love to see that! Even a quick holiday special would be nice.
I can deal with that. Would be awesome to see them rage over the travesty that is the WoL story.
OMG a SW about the SC2 story would be awesome!
Actually the plot isn't too terrible.
The DIALOGUE on the other hand…gaaaaaaaaaaaaaaaaawd.
Very cool. I always like to see the numbers break down behind stuff like this.
Interesting, I'd like to see the numerical difference between other Starcraft strategies in the future, it's cool to see the ups and downs of stuff like rushing this way.
Sidenote: I'm sorry if you've answered this before, but what race do you play?
In Broodwar I was 100% Zerg.
In SC2, I played mostly Protoss. The whole creep spread and larvae injection were two additional tasks that I just didn't have room for in my brain. I'd forget to do one, or the other, or both.
Now that I'm a few weeks into the game I'm giving Zerg a try again. While Protoss is easy to macro, they're murder to micro. Sentries, templars, blink stalkers, motherships… it seems like every dang unit has a cluster of special abilities.
So we'll see how long I stick with Zerg.
My solution is to ignore micro, so I mostly build carriers and other simple aircraft.
The great thing about this is that up to about Gold League, as long as you focus exclusively on making your macro play as efficient as possible, you often won't have to even watch your battles to win your matches.
Haha, this is awesome. I remember I tried programming something like this in Python about a year ago. It was a complete failure. I've always been a big Starcraft fan. It's nice to have my favorite video-game writer guy on the boat.
Rush beats boom. Boom beats turtle. Turtle beats rush.
Awesome article – this sort of thing is what I come here for.
This is a detail, but does it work like this? If you have enough resources to run 4 barracks for this tick, but you have five barracks, does the game in fact run 4 leaving one idle, or does it leave all five idle until you've got enough for all of them? ("Hope you brought enough minerals for everyone!") For something as fiddly as this rushing appears to be, the difference could be important.
The way it works is actually more strange and fiddly than that. You pay for units up-front when you put them in the queue. So, for optimum resource consumption, you've got to micro each factory. Usually you just put all the factories on a control group and tell them all to produce at once, and if you don't have enough, one or more of them won't build units. Conversely, if you queue up three or four units in each factory, all of those resources are just sitting there being useless (except for the one that's being built at the moment). It's one of the many ways in which Starcraft (of all versions) rewards "skill" of the "mechanical twitchy obsessive" variety.
Except it isn't twitchy at all. It takes exceedingly good mental discipline to be able to keep up with the mental checklist a typical build order requires. Seeing pros spamming their control groups constantly in a match is meaningless. You can easily match a pro in the early game just by being able to stick with your mental checklist of things to do. Being able to do this effectively means that you will naturally start speeding up your APM as you improve.
Isn't APM the definition of twitchy? Some of us prefer our strategy games reward us for strategy.
Strategy does not automatically mean "slow" and "with ample time to think it over".
Wow, that's a lot of analysis… forgive me if I'm missing something, but… it seems like this project was focused on rush instead of macro. And not in-game, but in the analysis itself. It looks like you rushed off and started writing code instead of macroing up and figuring out what exactly it was you were trying to solve.
In fact, couldn't this analysis be done much more simply with a spreadsheet? hmm… yes it can. The trick is developing a unified model for the "total cost" of each unit (as you did by integrating the price of the supply depot into the cost of marines). At that point all you need is a simple calculation for the "time to next unit" and some time offsets for relevant events like depots and such. Instead of modeling time as a bunch of equal length time steps in which something may or may not happen, you model it as events of defined length and then abstract those into continuous time processes for the next level of simulation. Anyway, like you said, a lot more difficult to do it with direct simulation than it seems.
I've often wondered why there isn't a "cyborg league" or even a "cyborg ladder" where players are allowed and encouraged to write their own automation tools and intermediate AI, and then just steer their own custom AI to victory. Tons of stuff (inject larvae, for instance, or building workers) could be easily and precisely handled by such a human-machine hybrid which is difficult for a human to handle on its own. Why doesn't this exist?
AI League would definitely be exciting to see, if only for the myriad of ways in which the programming could 'freak out' and do weird things :D (I've done Botball, I know how easily programs can fail, especially on contact with the enemy ;D).
Truthfully, that's being highly optimistic :/. After a little while, the format would become pretty stale, and basically filled with copy-pasted scripts. Programming freak-outs would become increasingly rare, plus the format would by definition be extremely hard to get into without copypasting things. At least in normal SC2, anybody can play Bronze League, and do unusual things. In AI League, most beginners would have to default to tried-and-true scripts, or else not play :/. And when that happens, there's not really any 'playing' being had.
I can't speak for Shamus, but I'll say this: I know programming. I don't know spreadsheets. So for me, programming is definitely the easier solution.
If you can program, you can do spreadsheets – spreadsheets are a form of visually structured programming.
As they get large, they become very complex, like poorly written code (because the techniques that make it not "poorly written" don't look go to the eye, which is the part of the end product).
So, at least as a beginning usage, they are easier than programming, generally speaking.
Well, I can do one and not the other, so clearly you can't do it just because you can program.
There's a Brood War API (bwapi) for writing AIs for Starcraft 1: Brood War. The University of California at Berkeley actually had a really good AI written, and there were some AI tournaments.
More relevant to your post, perhaps, is this answer.
Because of these reasons, it seems unlikely there will be an API like this without the direct approval in the near future. Some people write starcraft 2 AIs using the in-game scripting language, but these have to be inserted on a per-map basis and usually end up specialized to specific maps.
There is this guy, but he's done a large number of crazy tricks to get a general-purpose AI for starcraft 2; a lot of graphics reverse-engineering.
What happens if you send the workers on the rush?
This is sometimes done. It might give you the extra strength you need to win, but if you don't, you're completely fucked.
A-yup. They don't call that tactic an all-in for nothing.
Eh, even if they manage to get away with a worker, the game is still over, so losing that last worker is really more of a mercy killing than anything.
It would be better if they managed to kill all the enemy workers first. The best would be if you could somehow end up with neither player having any units at all (or the resources to make them). Taking towers into account, that's probably possible (albeit unlikely).
Now imagine trying to harvest those numbers from squishy, fallible humans, who are in no way uniform, as well as having a tendency to lie on surveys.
That's what the field of economics is like.
As a (former) Starcraft II player who has experimented with rushing I have some thoughts on this particular topic. You are entirely correct in your conclusion that the a 6-rax build is not a particularly strong rush due to the fact that a Barracks without a reactor add-on trains only one marine at a time.
The Zerg, however, do not suffer from such an issue because of the larvae mechanic. Every 15 seconds a larva spawns from a Hatchery as long as there are less than 3 larvae already present at the Hatchery. The 6-pool tactic relies heavily on there being 3 larvae available when the Spawning Pool finishes. These can then immediately be morphed into three sets of two Zerglings for a total of six Zerglings. If I recall correctly these should start close to 1:50, hatch at around 2:10 and arrive at the enemy base between 3:00 and 3:10, followed up by another set of two 15 seconds later and a third set of two another 15 seconds later. By your graph a 13-rax Terran will be close to getting out his first marine when the first 6 zerglings hit.
Assuming the Terran has not walled himself in six Zerglins can kill any marines as they come out, prevent any further structures from being built and harass the enemy worker line. Six Zerglins won't win a straight-up fight against a group of 15 workers, at that point, but WILL significantly disrupt mining / and are hard to catch before military units come out. Of course, it all comes down to micro, as the Terran player can use SCVs to shield his Marines from the Zerglins' melàªe attacks while they shoot overhead.
A typical Terran early-game all-in will quickly build a few Marines (between 1-5) and then attack with a large amount (if not all) SCVs, using the buff 45-health workers as a human shield for the Marines. Most of the time this will involve a so-called 'proxy rax', which is a Barracks constructed in an often-unscouted area nearby the enemy base so as to reduce the traveling time of attacking units and retaining the element of surprise.
On another note, one of the more powerful Terran rushes in Wings of Liberty is the 7-Barracks push (by which I mean, literally, 7 Barracks). This is not so much a rush that sacrifices economy as it does rely on having a healthy SCV count, but one that sacrifices advancement of tech for an early unit advantage.
The idea is to open with a 13-rax build and IMMEDIATELY seal off the ramp to prevent enemy scouting, skipping building a Refinery altogether. You upgrade the Command Centre to an Orbital Command at 15 supply as usual and slam down four additional barracks in the time it takes for the upgrade to finish and another two when resources allow.
By the time you reach 5:30 in the game you should have about 12 Marines and 16 SCVs or more (the build does skip SCVs in favour of infrastructure) and move out, arriving at the enemy base at around 6:20. While 12 Marines at the front door at this moment doesn't seem to particularly strong considering your graph, bear in mind that most players will have invested resources in tech and field a significantly less forces around this time.
The push, unlike Zerg's 6-pool, is not designed to kill with the first 12 Marines; it's the continuous stream of 7 more inbound Marines each 25 seconds that seals the deal, as generally the enemy player will not have sufficient infrastructure to hold against the waves and waves of incoming Marines.
A Protoss player can typically hold this kind of a rush by using well-placed Forcefields and using Stalkers to 'kite' the marines.
Terran players are more vulnerable as Siege Mode for Siege Tanks (staple tech of the metagame at the time) is still several tens of seconds away from finishing by the time the 12-Marine squad is at the front door. Since the front is usually walled with Supply Depots and other unit-producing structures, he'll take a lot of infrastructural damage.
Zerg players are most vulnerable to this rush as they have no good way to wall off the ramp to their base and stray Overlords (flying units that function as Supply Depots) can be picked off along the way, causing them to get supply blocked. Zergs also frequently take an early second base, which is even more exposed to the Marine onslaught. The only way a Zerg player can meet the incoming threat is either to have rushed Roaches himself (like the famous 7-Roach Rush, which has 7 Roaches coming out at around the 5-minute mark if well-executed), or to have Banelings out by the time the attack hits.
Now a friend of mine and I would use this strategy in ranked 2v2 games. In the case of isolated teammates, this means that ONE player has to deal with a whopping TWENTY-FOUR Marines at his front door by 6:20. Once the first player is decimated, the second player would generally be well-ahead on tech but still not have enough resources to hold off FOURTEEN additional Marines every 25 seconds. In the odd cases that the last opponent would prove a tough nut to crack, the two of us would both build two Refineries; one of us building Thors and the other going for Cloaked Banshees – this rarely failed to seal the deal. We ended up reaching rank 1 in our 2v2 Master League using this, and nothing but this strategy.
If anyone's interested, I could dig up some old replays of these games.
I'd totally be interested in seeing some cloaked banshee play, since that what I'm currently working on.
But, Shamus, what if you bring an SCV with you to make a bunker for your rush?
After making negative* comments on the previous StarCraft posts, I just want to say that this was fascinating.
*I never said they weren't well-written or interesting to read, just that I didn't have any interest in watching people play StarCraft.
I think this just goes to show that if you put enough math in front of nerds, they'll listen to you talk about anything. ANYTHING.
I don't care about the math, I just really enjoy when Shamus posts about problem-solving. I doubt I'm alone in this; it's probably why the coding posts are so popular with non-coders.
What about the strategy of making a couple of marines, sending them to harass the enemy gatherers, and then making more gatherers? You lose the marginal benefit of the workers for the time it takes to make the marines, but if 2 marines and a barracks cost as much as 5 workers and take 80 seconds to build, they need to deny the enemy 400 worker-seconds to come out ahead. Killing a worker is worth about a worker-minute (the mineral cost to replace him), in addition to the total amount of time until your opponent gets to his planned number of workers (the time that he is down a worker from plan), and distracting one for a second is worth a second. If you can kill one and distract 12 others for 20-30 seconds by rushing two marines and then going to 16 workers, you get to 16 workers and two marines first.
But that's a ton of micro to be able to manage, and it might be possible to kill two perfectly-microed marines with fewer than 400 worker-seconds of cost.
It's true for a lot of RTS games that you can just take your starting units or produce a handful of new units, and rush to the enemy base – at least, this is the case with old RTS games like Warcraft II or Settlers III in singleplayer mode.
I'm surprised no-one has mentioned this, but…I'm pretty sure you can run your "simulation" by doing some calculations on paper, without having to code it. You're basically talking about Queuing theory (think of marines like delivered packets and workers/barracks like processors), and while the processes involved in Starcraft are far from Poisson (making the math a bit hairy) you should be able to set up some sort of Markov chain calculations to definitively get an optimal marines vs. time line without having to resort to so many hand-waves.
Queueing theory eh? Very cool. Yeah, this is what I was trying to get to, except I didn't know what I was talking about. Looks like I have some reading to do.
You know, many of the RTS games, especially in the Age of Empires/Kings/Mythology sequence had lots of clean math on rushing. One of my favorite rush/flush strategies was the English town center rush, where the rush included moving your base.
(about a fourth game, that is still ongoing with ladders).


For this Employment Law Q&A installment Attorney Matt Jacobs answers questions related to unpaid wages. We have answers to your questions: Scroll down to find his answers to some of the most common questions about wage claims.
What evidence do I need for a wage claim?
That's a great question. Luckily, many different forms of evidence can be used to support a claim for unpaid wages. For example, time sheets, pay stubs, W-2 forms, and driving records are common types of evidence used to support an unpaid wage claim. However, in some circumstances employers will adjust an employee's time records, or require that they work "off the clock." In order to overcome missing, faulty, or manipulated records, the testimony of witnesses, or the claimant themselves, can be used to support a claim for unpaid wages.
Could I sue for unpaid wages without a lawyer?
The right to sue and defend against suit is a fundamental privilege. Accordingly, any person may bring an action in court, on their own behalf, for unpaid wages.
Follow-up question: Why would I need a lawyer for a wage claim?
An individual with a claim for unpaid wages would need a lawyer because navigating the legal system is very tricky. Federal and State rules of civil and judicial procedure provide specific rules as to form in which legal cases are brought and timing of when important stages should be complete. Further, employers often aggressively defend against unpaid wage claims with their own team of lawyers. It is important that a person or their representative have an understanding of the court's requirements and common the actions employers take when being sued for unpaid wages. Having an understanding of the law, court procedure, and common employer action can allow a claimant to best position themselves against an employer's aggressive defense team.
So, what does an employment lawyer really do?
Another good question. First and foremost, employment lawyers are familiar with the Federal and State laws governing employment relationships. Employment lawyers are experienced in analyzing the facts of a case and how they stand up against those Federal and State laws. In addition, they review the available evidence and develop a strategy to achieve the best resolution of the case. Bottom line, they help you navigate the law and ensure that you get any unpaid wages you deserve.
From start to finish, how exactly does a wage claim dispute work ?
To start off, unpaid wage disputes often arise far before an employee even makes a claim for the unpaid wages. It is common for you to notice a lack of payment far before ever bringing it to the attention of your employer. Some people notify their employer directly of the non-payment of wages, others are understandably too afraid to voice their concerns for fear of losing their job.
Inform them through an attorney.
If you decide to contact an attorney, the attorney will review the facts of the case and help you determine what wages you are owed. After determining what is owed, an attorney will often send a letter informing the employer that there is a dispute over unpaid wages and that employer has possibility violated the law.
Depending on how the employer responds to the letter, an employee can file a complaint with the court to enforce the wage and hour laws.
What is your favorite part about being an Employment Attorney?
My favorite part of being an Employment Attorney at John Bales Attorneys is helping my clients. I really enjoy advocating for people who have been taken advantage of, and helping them stand up for themselves.
So, in a nutshell how does a wage claim work?
In short, if you are not getting paid for all the work that you do for an employer you are likely entitled to recuperate your unpaid wages with a wage claim.
Couldn't find an answer to your specific question on wage claims? Send us a message and we'll answer it for you.
Think that you have a wage claim case? Contact our Employment Dispute Team now and we'll let you know if you have a case right away.


text:
Adrian Baldwin
The Blog Library
My 70s Things
Impaired hearing and impaired judgement
Brian Johnson, the legendary singer, has been warned that if he continues to front AC/DC, and subject himself to the rigours of touring, he faces permanent deafness.
That is bad news for AC/DC fans everywhere but particularly in the US where the world tour has been postponed, and for my buddy, Mark Hughes, who has a ticket for the UK leg of it. The suggestion from the band is that it might carry on with guest vocalists. To my mind, that is a bit shit – that would be like Motorhead touring without Lemmy…
…pointless.
If I had paid for a ticket, I'd be wanting my money back.
Without Johnson, who is so integral to the sound/experience, an AC/DC gig with the remaining members, and a guest, would feel more like a tribute act. Ironically, the tour is promoting the album "Rock or Bust" – without Johnson, it's a 'bust' for sure.
AC/DC has faced its share of woes of late – hearing loss, combined with the loss of mental faculties and a loss of liberty in the case of Phil Rudd. As a fan, I know that what I am about to suggest may upset the legions of others, but retirement must surely be on the cards.
In Johnson's case, there could be an upside, maybe stopping gigging could free him up to join the Top Gear presenting team instead.
Because the program hasn't even started and Evans and Matt LeBlanc are already in trouble. Though I think the whole doughnuts in the vicinity of the Cenotaph thing was just a publicity stunt. What a great way to court controversy and promote the new format show – the suggestion that the offending scenes might not be shown in the final broadcast show is irrelevant because the whole world has watched them now anyway.
Deaf (well nearly) could join Dumb (depending upon your perspective).
Blog Home
A keen scribbler and social commentator.

redpajama_set_name: RedPajamaCommonCrawl


Andy Roddick's normally-impressive grasscourt game looked adrift last week after an opening-match loss at Queen's Club. One wildcard and one title later at Eastbourne, it looks like the American is back on track.
On Saturday at the AEGON International in Great Britain, Roddick defeated defending champion Andreas Seppi 6-3, 6-2 for his first title of the year.
Roddick was helped during the week by two mid-match retirements, from fellow American Sam Querrey in the first round and Belgian Steve Darcis in the semifinals. It was Roddick's 31st career title, and he ties Roger Federer's record of at least one title during the last 12 years.
Spaniard David Ferrer followed-up his 2008 's-Hertogenbosch title with another on Saturday, beating German qualifier Philipp Petzschner 6-3, 6-4 at the UNICEF Open.
Ferrer improved to 15-15 in career finals, winning his fourth title this year after Auckland (d. Olivier Rochus), Buenos Aires (d. Nicolas Almagro) and Acapulco (d. Fernando Verdasco). Petzschner fell to 1-2 in career finals.
Russian veteran Nadia Petrova captured her career-first grasscourt title on Saturday at the Unicef Open in 's-Hertogenbosch, Netherlands, defeating Polish qualifier Urszula Radwanska 6-4, 6-3 for her 11th career title.
Radwanska, the sister of No. 3-ranked Aggie Radwanska, was gifted a spot in the final when former No. 1 Kim Clijsters defaulted their semifinals due to an abdominal issue, choosing to play it safe for the beginning of Wimbledon next week.
Petrova improved to 11-11 in career finals, and Radwanska was appearing in her career first. Petrova's previous best result on grass was a runner-up effort at Eastbourne in 2008.
Petrova almost made it a double Dutch, losing in the doubles final with Russian partner Maria Kirilenko to top seeds and French Open champs Sara Errani and Roberta Vinco of Italy 6-4, 3-6, 11-9.
Unseeded Austrian Tamira Paszek completed her Cinderella week at the AEGON International when she saved five match points on Saturday in the final, defeating No. 5 seed Angelique Kerber 5-7, 6-3, 7-5 for the title at Eastbourne.
Paszek trailed 3-5 in the third set when she saved the five match points. The Austrian improved to 3-1 in career finals.
Paszek entered the event with just two WTA-level victories all year and 11 first-round losses. Kerber after the final leads all WTA players with 40 wins in 2012.
i didn't think roddick would win a title so soon. this is good news just before wimbledon and olympics. And didn't know ferrer had a grass title already, he is not just a clay guy after all. He has titles in all surfaces now. Congrats to all winners.
Hope clijsters can recover before her first round match.
lots pick fed, I wonder why jane. he hasn't won a slam since 2 years ago. we will see.
haven't done my bracket either. I will try to get it in before deadline. Normally the deadline is just before the first ball is hit. So I reckon 11am British time?
Hi, jane. Long time no write.
Hello yourself mat4. So are you excited to watch Wimbledon? Any predictions?
New Player council elected: interesting to see Stakhovsky on there after his comments eariler this year!
I don't think I will have time to watch WB. Too much work for the summer.
The only prediction I could make is that Federer and Nole will be in the same half.
Time flies! Don't forget to choose brackets!
I forgot to watch France-Spain this evening. Lucky me. My team lost.
Well, it's good that you're busy mat4, but too bad you'll miss WB. I will be away for most of the second week, so I'll probably be able to check scores only intermittently.
kimberly or anyone else – do you have a link for wimbledon bracket, I can't seem to get through. can you please post bot ATP and WTA when you get a chance. Thanks.
Sorry to tell you, but France was really bad, and they still have some internal problems. Spain did it without sweating.
BTW, do I owe you ( and Polo) bottle of grog, what is your verdict about French cheering Nole and Rafa?
I am always busy, unfortunately, but I usually manage to find some time for tennis.
I pick, of course, Novak to win the title. Against Tsonga, perhaps?
Don't even mention the FO. This wound isn't healed yet.
I joined the bracket challenge. Someone has got to be the worst.
Great to see Roger in the player council again. This fellow sure is a leader. The passion he has for the game and his respect for it's traditions is unmatched and you have to admire his professional approach to tennis administration.
Good on you fed. You sure have a lot of arrows in your quiver. Your abilities off-the-court are as diverse and unique as your game.
Don't feel bad, I am fighting with sweetpatrick for a wooden spoon on the other (masters) bracket.
12 years in a row winning at least one title per year! Congratulation, Mr Roddick. He has no chances in Wimbledon but in the Olympics he could be very dangerous for everyone.
I found this two(2) points very intresting….But correct me if Im wrong….
1) Federer has Never played against Novak in Wimbledon….ever!
2) Federer has never played against Nadal in US OPEN….ever!
You're right. Strange, isn't it?
1- federer has never played djokovic at wimbledon- reason: they could NEVER meet at wimby in any manner prior to the SF, novak was not good enough to meet federer at that stage, except 2007 when he meet rafa and retired, until 2010 and 2011 when fed went out in QF- NOTHING STRANGE THERE.
2- federer has never played nadal at USO- reason: until last year rafa and fed could only be seeded to meet in the finals. Rafa was never good enough to reach finals until 2010.
so long story short, it's been a case of someone not being good enough to meet the other.
Nobody wrote that there was something suspicious in it. Are you suspicious?
Not at all. It raised your curiosity though didn't it? Mentioning the word suspicious, lol!
Like i said, they didn't meet since usually the other wasn't good enough at the time. Especially with rafa- at the time he could only meet fed at USO final, and he wasn't good enough for that at the time.
LESS THAN 24 Hours left to enter the hottest contest in town!
Margot—i knew he supported the heat, actually saw him sitting on the floor seats at a game. He is slowly growing on me and actually colin encouraged "grandmajoan" my mother, to pick him to win the tournament, which she did. And he signed Colin tennis ball so he is slowly growing on us. Nite Owl has not registered. If you can check with her if she intends to? Otherwise I will be spending all tomorrow adding brackets.
Brando-in fact, IMO opionion their matches on clay courts will become few and far between. This is no dig at fed fans but at this point in his career I think Federer has little interest in the clay court season and Nadal is determined to rack up points. Maybe they will meet in Madrid but at this point I think their clay meetings, once 4 times a year will become less frequent from here on out. Perhaps the head to head will start to reflect it too as Nadal's improvement on faster surfaces will likely place him in Federer's path on surfaces less favorable to him more often.
i completely agree. i also see rafa facing fed more often on grass, HC. Fed's still going strong on those surfaces, rafa has improved alot- so it should be a good contest if it happens.
PS: i have joined the bracket, but as of yet see no one else in the tennis-x group: is it that after the deadline we can see one another and comment then?
Hope i have registered correctly!
Brando-yes just checked, you have. Only me as the adminstrator can see registered users, and registered users with brackets although I cannot see what the bracket it. You will be able to see the standings and other users with brackets when the submission window opens tomorrow.
Glad Andy is growing on you, no cutting him off now.
Have "messaged" niteowl so hope she does a pick.
Cheers for organising it again. The world and his wife seems to be going with Fed, may have to do a second bracket, eek!
I dont see that way…Rafa has made 8 out of the last 9 GS finals….but Federer got knocked out early in all those non clay slams (except one) before meeting Rafa.
Federer IS just not good enough to get to Rafa on grass and HC and clay….let alone beating him.
Kimberly, I have discovered the dark horse of Wimbledon. Federer, Djokovic and Nadalbetter start sweating. He has a perfect record on all surfaces.
His name is Adrian Menendez-MacEiras. With a name like Mac's, you feel he has pedigree on grass.
Dave—did you join the bracket! I am excited to see your picks.
What is going on, not another penalty shootout ?
Wogboy,Brando the usual story England are cursed when it comes to penalty shootouts,say no more,no comment.
Wogboy thanks but its like you say penalties are a lottery,TBH Ashley Cole did not look confident the minute he stepped up to take that penalty,somehow i just had that feeling then that he was going to miss (sigh).
@wog boy, Alison: thanks- but again England go out on penalties:-( the ONLY consolation is that the better team won. Qtr finals was about as far as this team could go.
Wogboy im a Rafa fan,but been a Brit i root for Murray too,anyway as a Rafa fan i know it must hurt,but if its any consolation to you,thats the most nervous ive ever felt watching Rafa in a FO final,and i really thought Nole was going to win,my late father used to say to me that footballs more enjoyable if you dont give a fig who wins,same for tennis i suppose,having said that i suppose that would take the edge off it some what,tennis and football are deffinetly not for the faint hearted,but then again thats the whole point,the extacy of triumph or the agony of defeat.
Spain will beat Italy in the Euro2012 final.
Portugal will beat Germany in Euro2012 final.
What does your psychic predict about Wimbledon? Who is going to win ?
Kimberly, yes, look for ThatDave. Already in a hole with Nalby's loss.
I do hope that she will say Federer will be the winner of Wimbledon. I will be upset if she doesn't say Federer. I can't bear to see Nadal with another title and Djokovic as well.
Has your psychic friend said anything yet who is going to win Wimbledon? We are all waiting for what she said.


The O'Brien Press is an Irish publisher of mainly children's fiction and adult non-fiction and the only Irish publishing house to have received the prestigious International Reading Association Award.
The O'Brien Press was founded in 1973, evolving out of a family-run printing and type-house. Its first publication came in November 1974 and numerous other titles soon followed. O'Brien published books are regularly shortlisted for the Bisto Book of the Year Awards. As of 2007, no less than 24 books published by the O'Brien Press have won a Bisto Award.
The O'Brien Press is notable for launching the career of international, bestselling author, Eoin Colfer, publishing the "Benny Books" and The Wish List, and have also published The General by Paul Williams, which was made into a major film by John Boorman in 1998.
Marita Conlon-McKenna, (born 1956) - a children's novels author including Children of the Famine trilogy.
Judi Curtin - author of Alice and Megan series including Alice Next Door .
Paul Howard, (born 1971) - journalist and author of the Ross O'Carroll-Kelly series.
Gerry Hunt, (born 1936) - an Irish comics writer and artist.
Conor Kostick - an historian and writer including the Avatar Chronicles.
Oisín McGann, (born 1973) - a children and young adult author and illustrator.
Shay Healy, (born 1943) - a songwriter, broadcaster and journalist.
Elizabeth Shaw (artist), (1920 – 1992) - an Irish artist, illustrator and children's book author.
Gerard Whelan, (born 1957) - a children's author.
This page was last edited on 31 December 2018, at 01:07 (UTC).


text:
How Australia will benefit against India due to Virat Kohli's absence from Dharamshala Test?
How Australia will benefit against India due to Virat Kohli's absence from Dharamshala Test?
India vs Australia: There are cloud of uncertainties hovering around Virat Kohli's presence in the Border-Gavaskar Trophy decider at Dharamshala
Arun Rawal
The Border-Gavaskar Trophy is nicely poised between India and Australia and Dharamshala Test will be the decider of who wins the Test series. With a Test that important starting March 25, Indian skipper Virat Kohli's availability is not certain after the shoulder injury he encountered at Ranchi on Day 1 of the third Test. On the other hand, Australia will be high on spirits after being able to draw the Ranchi Test after a considerable deficit on Day 4.
Although Kohli has not been performing well with the bat having scored 46 runs in 5 innings but his presence in the field is such that it impacts the opposition team. That has been the story so far of the ongoing Test series with trash talk and controversies on and off the field. However, the Aussies will surely benefit from Kohli's absence. Here's why!
Virat Kohli's attacking tactics
Kohli is known for his attacking nature and going all guns blazing against teams even if they are dominating the game. The Bengaluru Test was an example of that as they bundled out Australia in the second and fourth innings despite under immense pressure created due to humiliating Pune defeat.
Kohli gives his bowlers a chance to attack the batsmen irrespective of the number of runs on the scoreboard. That gives the bowler the confidence to try more and more variations to get the better off the batsmen. And, that's what helps him break partnerships.
Virat Kohli at No. 4
However, Kohli's performance in the ongoing Test series is his worst run since the start of his career as he has managed to score only 46 runs from 5 innings. But, Kohli's talent cannot be ignored even if he is in the worst of his forms. Before this series, he was in tremendous form breaking Sir Don Bradman and Rahul Dravid's record of registering 4 double centuries in four Test series on the trot.
Dharamshala's wicket helps the batsmen who like the ball coming onto the bat and rewards them for good shots. Kohli is raring to get back into the form and shut Australian media's mouth with his bat and Dharamshala's wicket will provide him that opportunity. Australians always devise a play to get Kohli out, they will be under much less pressure if Kohli does not go into the field on March 25. There is a buzz going around that Shreyas Iyer might fill in the vacant spot on Kohli's absence.
Virat Kohli, the crowd motivator
Kohli does not only communicate actively with his bowlers and fielders but the crowd present in the stadium as well. Bengaluru Test saw Kohli motivating the crowd which resulted in Ishant Sharma putting pressure on Mitchell Marsh and getting his wicket. His passion on the field is unmatched and the only player coming close to him in the history of Indian cricket is Sourav Ganguly.
Kohli does not hold back his emotions whether it was the 'brain fade' incident or giving reply to the Aussies when they mocked his shoulder injury at Ranchi.
Kohli's absence will surely make the Aussies breathe a sigh of relief if Kohli does not play at Dharamshala. In the press conference too he revealed that there is still a chance that he can play in the fourth Test but he will have to pass through the fitness test. Although the physio will have the final call in that matter.


The on-site generation of oxygen is a safe, reliable and above all, cost-effective method. Our atmosphere, as raw material, is an inexhaustible and free source of oxygen. Oxygen generation is an ecologically sustainable solution for healthcare units.
The healthcare sector has expressed significant interest in moving to this new production system. When compared to the old cold distillation method, this interest is justified.
From the beginning of 2013, the Finnish Medicines Agency, Fimea, concluded that on-site generation of oxygen produces a 93% oxygen purity ratio. This production method has been clinically and scientifically proven* to be safe for use in healthcare units in Finland.
The decision provides the opportunity to use new, safe, reliable and cost-effective technology for the production of a medical oxygen. In the history of Finnish healthcare, this represents a significant milestone in the production of a single medical product.
* Source: Friesen, R.M., Raber, M.B., Reimer, D.H., "Oxygen concentrators: a primary oxygen supply source." Can. J Anesth. 1999;46:1189.
The manufacture of medical oxygen must comply with all national and EU medical laws. Fimea supervises pharmaceutical production in Finland.
The authority monitors and approves all pharmaceutical production and quality control procedures. Only when the formal license has been granted by Fimea may the equipment be used.
GasSol Oy is a specialist medical gases company. We have wide experience in the manufacture of medical gases and conform to all GMP (good manufacturing practice) requirements.
GasSol has successfully complied with dozens of GMP inspections and never failed to receive an official license. For the best possible solution, we at GasSol encourage you to make contact with us at the design stage in order to facilitate the smoothest possible transition when switching to an oxygen-generating system.
Your partnership with GasSol makes it possible for us to officially authorise the production of medical oxygen. Our experience and know-how are always at your disposal. GasSol Oy guides, educates and makes the required authority documentation. We also advise and consult on hardware acquisitions.
Why Change to Oxygen Generation?


This is a novella, but a first in a series of novellas. And actually not as short as you expect it to be.
The story filled the pages - no blank or skim reading moments as its all packed in.
From the first page we see how Gerrod is fighting his desire for Abigail, and its so fun to watch the to and froing and giving Abigail, a great strong character refusing to be pushed into anything.
This first novella brings to light the term and being of a "blood rose". Basically a being (human, fae - can be anything) that is purely for the Mastyr vampires who suffer from constant blood starvation.
Abigail faces alot of decisions to make and its good to go along side her to watch, although you know deep down whats going to happen.
I enjoyed this! Already onto the next one of "Embrace the Magic".


Thanks, after I finally found it. The original site you gave us was www.buckyreed.blogpot.com and it came up a rabid religious site. Thought you had lost it. Notice "blogpot" not blogspot - you left out the "s". Go in it as you originally sent it to us - you will be amazed.


text:
DocuSign Announces First Quarter Fiscal 2023 Financial Results
SAN FRANCISCO, June 9, 2022 /PRNewswire/ -- DocuSign, Inc. (NASDAQ: DOCU), which offers the world's #1 e-signature solution as part of the DocuSign Agreement Cloud, today announced results for its fiscal quarter ended April 30, 2022.
"We delivered solid first-quarter results, growing revenue by 25% year-over-year and adding nearly 67,000 new customers, bringing our total global customer base to 1.24 million. We also bolstered our leadership team with key new hires who, together with our existing team, are ensuring we're well-positioned to grow and scale our business," said Dan Springer, CEO of DocuSign. "With over a billion users worldwide, the proven value of our products, and the significant opportunity we have ahead of us, we're confident in our ability to successfully navigate the challenges of a dynamic global environment."
First Quarter Financial Highlights
Total revenue was $588.7 million, an increase of 25% year-over-year. Subscription revenue was $569.3 million, an increase of 26% year-over-year. Professional services and other revenue was $19.4 million, an increase of 13% year-over-year.
Billings were $613.6 million, an increase of 16% year-over-year.
GAAP gross margin was 78% for both periods. Non-GAAP gross margin was 81% for both periods.
GAAP net loss per basic and diluted share was $0.14 on 200 million shares outstanding compared to $0.04 on 194 million shares outstanding in the same period last year.
Non-GAAP net income per diluted share was $0.38 on 206 million shares outstanding compared to $0.44 on 208 million shares outstanding in the same period last year.
Net cash provided by operating activities was $196.3 million compared to $135.6 million in the same period last year.
Free cash flow was $174.6 million compared to $123.0 million in the same period last year.
Cash, cash equivalents, restricted cash and investments were $1,063.8 million at the end of the quarter.
A reconciliation of GAAP to non-GAAP financial measures has been provided in the tables included in this press release. An explanation of these measures is also included below under the heading "Non-GAAP Financial Measures and Other Key Metrics."
Operational and Other Financial Highlights
Executive Appointments. DocuSign appointed the following key new leaders:
Steve Shute as President of Worldwide Field Operations. Steve brings nearly three decades of experience leading global enterprise sales and success organizations at large technology companies. Prior to joining DocuSign, Steve served as the President of Global Sales & GTM for Customer success at SAP.
Jim Shaughnessy as Chief Legal Officer. Jim brings over 20 years of public policy and legal experience at technology companies. Prior to joining DocuSign, Jim spent 10 years at Workday where he served as General Counsel and Senior Advisor for Corporate Affairs.
Jennifer Christie as Chief People Officer. Prior to joining DocuSign, Jennifer served as the Chief HR Officer for Twitter and Bolt. She was also the SVP of HR at American Express and served as Special Assistant to the President for personnel.
Inhi Cho Suh as President of Product and Technology starting in July 2022, when she will transition off DocuSign's board of directors. Inhi has spent over 20 years at IBM, successfully traversing senior product and technology leadership roles.
Jerome Levadoux as DocuSign's Chief Product Officer. Prior to stepping into the CPO role, Jerome was the Head of eSignature Products for DocuSign.
DocuSign CLM Essentials. DocuSign introduced CLM Essentials, a fast, easy and affordable way to get started with CLM. CLM Essentials makes contract management accessible to medium sized businesses and departments that are looking for a quick solution to help automate many of the most common agreement processes — such as document generation, collaboration, workflows and repository.
DocuSign Agreement Cloud 2022 Product Release 1. DocuSign announced many new product capabilities and enhancements with highlights in the following areas:
Scheduled Send for DocuSign eSignature. Gives users the flexibility to schedule an agreement to be sent at a specific date and time. This improves response rates, by delivering agreements at the times optimal for the user.
Other Agreement Cloud enhancements such as additional methods for ID Verification and AI-Assisted Data Capture for DocuSign CLM.
Microsoft Partnership Expansion. On June 7, 2022, DocuSign announced an expansion of its global strategic partnership with Microsoft to offer new DocuSign Agreement Cloud integrations and capabilities across Microsoft's business solutions. As part of the agreement, Microsoft and DocuSign will also expand the use of each other's products within their own organizations. Microsoft will adopt DocuSign's products and services, including DocuSign eSignature and CLM, to streamline select e-signature and contract management workflows.
The company currently expects the following guidance:
Quarter ending July 31, 2022 (in millions, except percentages):
Non-GAAP gross margin
Non-GAAP operating margin
Non-GAAP diluted weighted-average shares outstanding
Year ending January 31, 2023 (in millions, except percentages):
The company has not reconciled its guidance of non-GAAP financial measures to the corresponding GAAP measures because stock-based compensation expense cannot be reasonably calculated or predicted at this time. Accordingly, a reconciliation has not been provided.
Webcast Conference Call Information
The company will host a conference call on June 9, 2022 at 1:30 p.m. PT (4:30 p.m. ET) to discuss its financial results. A live webcast of the event will be available on the DocuSign Investor Relations website at investor.docusign.com. A live dial-in will be available domestically at 877-407-0784 or internationally at 201-689-8560. A replay will be available domestically at 844-512-2921 or internationally at 412-317-6671 until midnight (ET) June 23, 2022 using the passcode 13728945.
About DocuSign
DocuSign helps organizations connect and automate how they prepare, sign, act on, and manage agreements. As part of the DocuSign Agreement Cloud, DocuSign offers eSignature, the world's #1 way to sign electronically on practically any device, from almost anywhere, at any time. Today, over a million customers and more than a billion users in over 180 countries use the DocuSign Agreement Cloud to accelerate the process of doing business and simplify people's lives.
For more information, visit www.docusign.com, call +1-877-720-2040, or follow @DocuSign on Twitter, LinkedIn, Facebook and Instagram.
Copyright 2022. DocuSign, Inc. is the owner of DOCUSIGN® and all its other marks (www.docusign.com/IP).
DocuSign Investor Relations
investors@docusign.com
DocuSign Corporate Communications
media@docusign.com
This press release contains forward-looking statements within the meaning of Section 27A of the Securities Act of 1933, as amended, and Section 21E of the Securities Exchange Act of 1934, as amended, that are based on our management's beliefs and assumptions and on information currently available to management, and which statements involve substantial risk and uncertainties. Forward-looking statements include all statements that are not historical facts and can be identified by terms such as "may," "will," "should," "expects," "plans," "anticipates," "could," "intends," "target," "projects," "contemplates," "believes," "estimates," "predicts," "potential," or "continue" or the negative of these words or other similar terms or expressions that concern our expectations, strategy, plans or intentions. Forward-looking statements in this press release include, among other things, statements under "Outlook" above and any other statements about expected financial metrics, such as revenue, billings, non-GAAP gross margin, non-GAAP diluted weighted-average shares outstanding, and non-financial metrics, such as customer growth, as well as statements related to our expectations regarding our growth, the benefits of the DocuSign Agreement Cloud, and the anticipated benefits of our strategic partnership with Microsoft, including the implementation of new integrations or features and the adoption of certain products. They also include statements about our future operating results and financial position, our business strategy and plans, market growth and trends, and our objectives for future operations. These statements are subject to substantial risks and uncertainties that could cause actual results to differ materially from those expressed or implied by such statements.
These risks and uncertainties include, among other things, risks related to our expectations regarding the continuing impact of the COVID-19 pandemic, including the easing of related regulations and measures as the pandemic and its related effects begin to abate or have abated, on our business, results of operations, financial condition, and future profitability and growth; our expectations regarding the impact of the evolving COVID-19 pandemic on the businesses of our customers, partners and suppliers, and the economy, as well as the macro- and micro-effects of the pandemic, including the pace of the digital transformation of business and differing levels of demand for our products as our customers' priorities, resources, financial conditions and economic outlook change; global macro-economic conditions, including the effects of inflation, rising interest rates and market volatility on the global economy; our ability to estimate the size of our total addressable market, and the development of the market for our products, which is new and evolving; our ability to effectively sustain and manage our growth and future expenses, achieve and maintain future profitability, attract new customers and maintain and expand our existing customer base; our ability to scale and update our platform to respond to customers' needs and rapid technological change; the effects of increased competition in our market and our ability to compete effectively; our ability to expand use cases within existing customers and vertical solutions; our ability to expand our operations and increase adoption of our platform internationally; our ability to strengthen and foster our relationships with developers; our ability to expand our direct sales force, customer success team and strategic partnerships around the world; the impact of any data breaches, cyberattacks or other malicious activity on our technology systems; our ability to identify targets for and execute potential acquisitions; our ability to successfully integrate the operations of businesses we may acquire, and to realize the anticipated benefits of such acquisitions; our ability to maintain, protect and enhance our brand; the sufficiency of our cash, cash equivalents and capital resources to satisfy our liquidity needs; limitations on us due to obligations we have under our credit facility or other indebtedness; our failure or the failure of our software to comply with applicable industry standards, laws and regulations; our ability to maintain, protect and enhance our intellectual property; our ability to successfully defend litigation against us; our ability to attract large organizations as users; our ability to maintain our corporate culture; our ability to offer high-quality customer support; our ability to hire, retain and motivate qualified personnel; our ability to estimate the size and potential growth of our target market; uncertainties regarding the impact of general economic and market conditions, including as a result of regional and global conflicts or related government sanctions; and our ability to maintain proper and effective internal controls. Additional risks and uncertainties that could affect our financial results are included in the sections titled "Risk Factors" and "Management's Discussion and Analysis of Financial Condition and Results of Operations" in our annual report on Form 10-K for the fiscal year ended January 31, 2022 filed on March 25, 2022, our quarterly report on Form 10-Q for the quarter ended April 30, 2022, which we expect to file on June 9, 2022 with the Securities and Exchange Commission (the "SEC"), and other filings that we make from time to time with the SEC. In addition, any forward-looking statements contained in this press release are based on assumptions that we believe to be reasonable as of this date. Except as required by law, we assume no obligation to update these forward-looking statements, or to update the reasons if actual results differ materially from those anticipated in the forward-looking statements.
Non-GAAP Financial Measures and Other Key Metrics
To supplement our consolidated financial statements, which are prepared and presented in accordance with GAAP, we use certain non-GAAP financial measures, as described below, to understand and evaluate our core operating performance. These non-GAAP financial measures, which may be different than similarly-titled measures used by other companies, are presented to enhance investors' overall understanding of our financial performance and should not be considered a substitute for, or superior to, the financial information prepared and presented in accordance with GAAP.
We believe that these non-GAAP financial measures provide useful information about our financial performance, enhance the overall understanding of our past performance and future prospects, and allow for greater transparency with respect to important metrics used by our management for financial and operational decision-making. We present these non-GAAP measures to assist investors in seeing our financial performance using a management view, and because we believe that these measures provide an additional tool for investors to use in comparing our core financial performance over multiple periods with other companies in our industry. However, these non-GAAP measures are not intended to be considered in isolation from, a substitute for, or superior to our GAAP results.
Non-GAAP gross profit, non-GAAP gross margin, non-GAAP operating expenses, non-GAAP income from operations, non-GAAP operating margin, non-GAAP net income and non-GAAP net income per share: We define these non-GAAP financial measures as the respective GAAP measures, excluding expenses related to stock-based compensation, employer payroll tax on employee stock transactions, amortization of acquisition-related intangibles, amortization of debt discount and issuance costs, fair value adjustments to strategic investments, and, as applicable, other special items. The amount of employer payroll tax-related items on employee stock transactions is dependent on our stock price and other factors that are beyond our control and do not correlate to the operation of the business. When evaluating the performance of our business and making operating plans, we do not consider these items (for example, when considering the impact of equity award grants, we place a greater emphasis on overall stockholder dilution rather than the accounting charges associated with such grants). We believe it is useful to exclude these expenses in order to better understand the long-term performance of our core business and to facilitate comparison of our results to those of peer companies and over multiple periods. In addition to these exclusions, we subtract an assumed provision for income taxes to calculate non-GAAP net income. We utilize a fixed long-term projected tax rate in our computation of the non-GAAP income tax provision to provide better consistency across the reporting periods. For fiscal 2023, we determined the projected non-GAAP tax rate to be 20% tax rate.
Free cash flow: We define free cash flow as net cash provided by operating activities less purchases of property and equipment. We believe free cash flow is an important liquidity measure of the cash that is available (if any), after purchases of property and equipment, for operational expenses, investment in our business, and to make acquisitions. Free cash flow is useful to investors as a liquidity measure because it measures our ability to generate or use cash in excess of our capital investments in property and equipment. Once our business needs and obligations are met, cash can be used to maintain a strong balance sheet and invest in future growth.
Billings: We define billings as total revenues plus the change in our contract liabilities and refund liability less contract assets and unbilled accounts receivable in a given period. Billings reflects sales to new customers plus subscription renewals and additional sales to existing customers. Only amounts invoiced to a customer in a given period are included in billings. We believe billings is a key metric to measure our periodic performance. Given that most of our customers pay in annual installments one year in advance, but we typically recognize a majority of the related revenue ratably over time, we use billings to measure and monitor our ability to provide our business with the working capital generated by upfront payments from our customers.
For a reconciliation of these non-GAAP financial measures to the most directly comparable GAAP financial measure, please see "Reconciliation of GAAP to Non-GAAP Financial Measures" below.
April 30,
(in thousands, except per share data)
Professional services and other
Total cost of revenue
Interest income and other income (expense), net
Loss before provision for income taxes
Net loss
$ (27,373)
$ (8,354)
Net loss per share attributable to common stockholders, basic and diluted
$ (0.14)
Weighted-average number of shares used in computing net loss per share
attributable to common stockholders, basic and diluted
Stock-based compensation expense included in costs and expenses
Cost of revenue—subscription
Cost of revenue—professional services and other
Investments—current
Contract assets—current
Investments—noncurrent
Deferred contract acquisition costs—noncurrent
Other assets—noncurrent
Accrued expenses and other current liabilities
Accrued compensation
Convertible senior notes—current
Contract liabilities—current
Operating lease liabilities—current
Convertible senior notes, net—noncurrent
Contract liabilities—noncurrent
Operating lease liabilities—noncurrent
Deferred tax liability—noncurrent
Other liabilities—noncurrent
Total stockholders' equity
Total liabilities and stockholders' equity
Adjustments to reconcile net loss to net cash provided by operating activities
Amortization of deferred contract acquisition and fulfillment costs
Amortization of debt discount and transaction costs
Non-cash operating lease costs
Contract assets
Deferred contract acquisition and fulfillment costs
Contract liabilities
Sales of marketable securities
Maturities of marketable securities
Purchases of strategic and other investments
Repayments of convertible senior notes
Payment of tax withholding obligation on net RSU settlement and ESPP purchase
Proceeds from exercise of stock options
Proceeds from employee stock purchase plan
Net cash (used in) provided by financing activities
Effect of foreign exchange on cash, cash equivalents and restricted cash
Net increase (decrease) in cash, cash equivalents and restricted cash
Cash, cash equivalents and restricted cash at beginning of period (1)
Cash, cash equivalents and restricted cash at end of period (1)
(1) $1.4 million and $0.6 million of restricted cash was included at April 30, 2022 and January 31, 2022.
RECONCILIATION OF GAAP TO NON-GAAP FINANCIAL MEASURES
Reconciliation of gross profit and gross margin:
GAAP gross profit
Add: Stock-based compensation
Add: Amortization of acquisition-related intangibles
Add: Employer payroll tax on employee stock transactions
Non-GAAP gross profit
GAAP gross margin
Non-GAAP adjustments
GAAP subscription gross profit
Non-GAAP subscription gross profit
GAAP subscription gross margin
Non-GAAP subscription gross margin
GAAP professional services and other gross loss
Non-GAAP professional services and other gross loss
GAAP professional services and other gross margin
(40) %
Non-GAAP professional services and other gross margin
Reconciliation of operating expenses:
Less: Stock-based compensation
Less: Amortization of acquisition-related intangibles
Less: Employer payroll tax on employee stock transactions
GAAP sales and marketing as a percentage of revenue
Non-GAAP sales and marketing as a percentage of revenue
GAAP research and development as a percentage of revenue
Non-GAAP research and development as a percentage of revenue
GAAP general and administrative as a percentage of revenue
Non-GAAP general and administrative as a percentage of revenue
Reconciliation of income (loss) from operations and operating margin:
GAAP loss from operations
Non-GAAP income from operations
GAAP operating margin
(3) %
Reconciliation of net income (loss) and net income (loss) per share, basic and diluted:
GAAP net loss
Add: Amortization of debt discount and issuance costs
Less: Fair value adjustments to strategic investments
Add: Income tax effect of non-GAAP adjustments (1)
Non-GAAP net income
Numerator:
Add: Interest expense on convertible senior notes
Non-GAAP net income attributable to common stockholders, diluted
Denominator:
Weighted-average common shares outstanding, basic
Effect of dilutive securities
Non-GAAP weighted-average common shares outstanding, diluted
GAAP net loss per share, basic and diluted
Non-GAAP net income per share, basic
Non-GAAP net income per share, diluted
(1) Represents the income tax adjustment using our estimated non-GAAP tax rate of 20%. Estimating a non-GAAP tax rate of 20%, the income tax effect of non-GAAP adjustments for the three months ended April 30, 2021 was $16.8 million.
Computation of free cash flow:
Less: Purchases of property and equipment
Non-GAAP free cash flow
$ (112,954)
Computation of billings:
Add: Contract liabilities and refund liability, end of period
Less: Contract liabilities and refund liability, beginning of period
Add: Contract assets and unbilled accounts receivable, beginning of period
Less: Contract assets and unbilled accounts receivable, end of period
Non-GAAP billings
SOURCE DocuSign, Inc.
DocuSign, Inc.
Tweets by @docusign