tag:blogger.com,1999:blog-52650003935165813022024-03-13T13:16:13.695-07:00a little excess (is good for you)My name is Alexis Lee. I like simplifying problems, Buddhism, co-op games and making terrible art.Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.comBlogger76125tag:blogger.com,1999:blog-5265000393516581302.post-4993066953703949002015-01-16T08:42:00.000-08:002015-01-21T03:30:31.726-08:00Mutt: Delete/Move thread to "Deleted Items"<pre>
folder-hook . 'macro index d "<save-message>=Deleted<quote-char> Items<enter>"'
folder-hook . 'macro index \cd "<untag-pattern>.<enter><tag-thread><untag-pattern>~D<enter><tag-prefix><save-message>=Deleted<quote-char> Items<enter>"'
</pre>Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-49562767827635546242014-09-30T03:09:00.001-07:002014-09-30T03:09:49.831-07:00PyCon UK 2014Hello,
I'm never going to remember everything until next Monday, so have a
braindump. I'll put up an item for questions in that meeting. These are
the talks I went to, I've linked slides for some but not all.
Note PyPy is an alternative Python interpreter; PyPi is where pips come
from; PiPy is a Raspberry Pi lib; and if you name your next lib PiPi I
will hurt you.
--- Keynote: Ecosystem threats to Python (Van Lindberg)
Java, JS and Go. These are threats because Python has poor interop with
them. He did mention it's not a zero-sum game. There wasn't a rallying
cry or solution offered, Van just called these out.
There was a lot of instinctive dislike of Java. It got called out as a
90s ancient and enterprise-y. There didn't seem to be much understanding
of why people might choose the JVM as a platform. Scala got a brief
mention at least. Java is the native language for Android, I can't
remember if Van mentioned this but Python is shut out of mobile right
now.
JS was lumped with node.js. CoffeeScript, PureScript etc weren't
mentioned. I don't remember much beyond a few cracks really.
There was some admiration for Go, particularly the single-executable
deployment story. Speaking to Michael Foord (Go dev at Canonical)
afterwards, Go bucks the trend on exception handling and several libs
try to fix that. The performance is good though - Van has a fork of
Swift with pieces rewritten in Go and he says it's 3x faster.
--- HTTP/2: because the Web was too easy (Cory Benfield)
https://t.co/Eq7WZ96wDI - slides
Semi-recent developments in web dev have included CSS spriting,
optimising load time for 'above the fold' and aggressive minification +
concatenation of resources. Many of these are essentially hacks to
mitigate the misuse of TCP connections by HTTP. TCP connections are
intended to stay open for minutes or at least seconds, not milliseconds.
Not only do these hacks complicate the toolchain, they make caching more
difficult.
HTTP/2 offers great latency reduction by using a single connection for
multiple resources. It also allows servers to push resources you didn't
yet ask for (EG CSS, JS) so they're in your cache once you've parsed the
HTML.
The requests lib already supports HTTP/2, so from an OpenStack
perspective, when we want to switch it should be fairly easy. However it
is ~95% SPDY which wraps HTTP/1.1 and was very much designed for
browsers. Benefits to RESTful interactions are definite but incidental
to the design. There is some talk of an HTTP/3 which tackles this but it
sounds like wishful thinking at this point.
--- Ganga: an interface to the LHC computing grid (Matt Williams)
Map/reduce for the LHC. You submit jobs, either to a local backend or
the LHC grid, and it does them for you. They have a remote filesystem so
you don't have to download gigabyte datafiles locally. Pre-dates OpenStack.
--- Advanced py.test fixtures (Floris Bruynooghe)
http://pytest.org/latest/contents.html
Py.test looks interesting. I can't say for certain it's better than our
current subunit/testr/mock/tox stack or even how many of those it
replaces. It's hard to imagine it's any worse though.
The fixtures offer:
* autowired dependency injection
* parameterisation - multiple tests are generated so you know which
values failed
* finalization
* markers - general tagging mechanism, you can restrict a test run to
EG not run DB tests. You can reflect on markers from fixtures, to EG
skip tests if a server is unavailable (and fail if the test runner is
CI).
Unrelated to PyCon, Matt W found http://pythonhosted.org/behave/ for
BDD. Matt + I have both done BDD previously and found it beneficial.
--- Keynote: Lessons from Strangers (Rachel Sanders)
http://www.slideee.com/slide/pycon-uk-2014-keynote
* "People are happiest when they can get their work done."
This is an MBA-level truth bomb.
* People don't want to use your product, they want to HAVE used it.
* Nobody wants to read the damn manual. Or can remember 850 pages.
Build clean APIs. Do UX. Listen. Empower. Do RCA. Plan for mistakes.
* Read "The Design of Everyday Things", by Don Norman (on my Amazon
wishlist now!)
--- When Performance matters (Marc Andre-Lemburg)
--- The High Performance Python Landscape (Ian Ozsvald)
https://github.com/egenix/when-performance-matters
Ian gave me (not just me) a free book! If anyone wants a browse, it's on
my shelf.
Step #1, as any fule kno, is to profile. Some tools: cProfile,
line-profiler, memory-profiler. Run Snake Run is a visualizer for
cProfile.
There are some simple optimisations that speed up regular Python code.
For example list comprehensions are faster than for loops; #join is
faster than string interpolation (duh); string dict lookups are slow,
use ints or interned strings; exceptions are terrible if triggered
(~625ms not ~40ms). Note this is all for high performance Python, not
necessarily the Pythonic or readable way to do it.
The next step is using C extensions for your tight loops, EG looping in
numpy/lxml; the operator module; cStringIO. You can save memory using
slots or the Flyweight pattern (Design Patterns: not just for Java!).
Beyond this... PyPy is a Python interprester with a JIT, which makes it
much faster than CPython (the regular interpreter). It supports cffi (so
you can keep using C extensions like numpy) although the callout to
these is slower than from CPython. Note PyPy is *slower* than CPython
until the JIT kicks in.
Cython can compile your Python to C but you need type annotations which
make it no longer Python. You can autogenerate annotation comments with
ShedSkin, which could be manually converted to Cython types. Or you
could use Pythran which uses the comments directly. However, the numba
lib manages equivalent (iirc) speedups using decorators to mark
functions for JIT. I don't see why anyone would use Cython or Pythran,
JITs rule OK.
If your problem is vectorizable, you have a nuclear option in OpenCL.
You can use that on your CPU or GPU.
--- Simulating Quantum Systems in Python (Katie Barr)
http://physik.uni-paderborn.de/?id=178571 (not from KB)
I met Katie while getting some air. She was quite irate about HP
cancelling their quantum research programme! Her talk was on simulation
of discrete-time quantum walks across a 2D array. Although the science
part was a bit boggling, the Python part was pretty simple.
The probability wave spreads across the array, attenuating as it extends
but building interference patterns. One location, marked by the coin
flip used there being unfair, builds up a high probability. The
discrete-time quantum walk can find this location in O(log(n))
iterations, which is provably minimal.
--- Use of OpenStack CI for your own projects (Yolanda Robla Mota)
Yolanda from the Gozer team gave a comprehensive if whirlwind tour of
Gerrit, Zuul, Jenkins, JJB et al. Not many people turned up to be
honest, I think it went way over most people's heads and/or needs.
--- The IPython Notebook is for everyone (Gautier Hayoun)
http://opentechschool.github.io/python-data-intro/core/notebook.html
https://cloud.sagemath.com/ - try it out
(not GH's links)
The IPython Notebook is a web UI to the IPython shell. This means you
don't want to make a server publicly accessible! However it's pretty
fantastic for playing with "what if?" scenarios or creating tutorials. I
can see great application in classrooms, where you put a prewritten
notebook on each student's PC and let them tinker with it.
--- Stormy Webber (Wes Mason)
I missed most of this talk but essentially Wes presented Tornado, a web
framework and async networking lib. Think node.js for Python.
--- Functional Programming and Python (Pete Graham)
Unfortunately Pete talked mostly about the advantages of functional
programming, with little proof or demonstration. Functional programming
did not feature heavily in conference discussion at all.
--- Building great APIs in Python (Paul Hallett)
a) Use REST; b) keep it simple. I did learn about the PATCH verb, which
is what you should use to PUT a partial resource IE do a partial update.
HATEOAS - horrible acronym for using URIs to identify resources in REST
APIs instead of UUID, numeric ID or common name.
Tastypie is a neat lib for making resources available, offering an
automatic endpoint list.
Httppy gives you a shell from which you can GET resources easily.
--- How does a spreadsheet work? (Harry Percival)
Harry talked us through Dirigible, which has been open-sourced. I think
he said it was going to be a product but PythonAnywhere decided there
wasn't a market. He agreed that in practice, you should probably just
use IPython Notebook.
It's generally pretty simple, he started out just eval'ing formulae then
making cell value substitutions. You build a tree to handle
dependencies. Engaging, fast-paced speaker, his site is
obeythetestinggoat.com and he wrote O'Reilly "TDD with Python". Worth
seeing just for entertainment.
--- Keynote: A time traveler's guide to Python (Jessica McKellar)
(I've tweeted her to ask for slides, not available yet afaict)
I thought this was going to be a fluff talk initially. Jessica spent
20mins talking about Python's history then she blew us all away. Turns
out she's a startup founder, a PSF director (obviously an engineer) and
would like the Python community to shut the hell up about 2 vs 3.
Instead she would like us to focus on growing market share through the
traditional mechanisms of a startup. For example, a focus on the
onboarding experience and seizing opportunities to push Python EG in
schools.
I was slightly creeped out by zero-sum language but I trust it was just
phrasing. It was refreshing to hear someone applying time-proven
business lessons on growing adoption to a programming community.
Jessica mentioned mobile as something to talk about. Initially she
didn't offer an opinion but after being asked directly she said she'd
like to see something.
--- Using Python to improve government (Michael Brunton-Spall)
https://speakerdeck.com/bruntonspall/using-python-to-improve-government-pycon-uk-2014
I first (and last) saw MBS at FPDays, talking about Scala at the
Guardian, so I was interested in his shift. He spent a lot of time
debugging the JVM GC apparently and had strong moral reasons for wanting
to work in the public sector.
His talk was inspiring, he was hired by the Cabinet Office to help sort
out govt IT. The DirectGov initiative has had some success in publishing
but MBS was asked to help with transactions. He first worked with the
Insolvency Service. He took a .NET team and, with the help of a big
Cabinet Office stick, took them right out of their comfort zone to
Python. This stopped them retaining any bad practices without being too
hard (Haskell). He taught Agile, storyboarding, composition,
decomposition, recursion, UX and many other things.
Specifically they worked on the redundancy payments system. He showed an
interaction diagram from hell, it seems the service user had to submit
an initial 16-page form then have several follow-on interactions.
Bearing in mind similar points to Rachel Sanders' talk, and that people
claiming redundancy benefits really do just want to get paid not fill
out forms, they converted this into a wizard with recurring sections,
usually only asking for 2-3 pieces of info per page.
Finally he brought the whole team to PyCon! They all seemed engaged and
really proud of the process and results.
--- The Minecraft Challenge (Katie Bell)
Katie's challenge was to create a way to script Minecraft that preserved
the nature of the game, that was approachable and allowed multiple
participants at once. She achieved this by creating a scripting
interface to control a robot. She had a few demo scripts, EG to mine for
iron or build a stone hut. She also dropped her robot pumpkin on a
chicken. Feathers and applause everywhere (the robot is represented in
game by a pumpkin).
An important part of her message to children is that when you get bored
of something, you can script it. The robot style of scripting supports
this goal of playing the game, just more efficiently. The (more
powerful) random access scripting style on the other hand makes it a
different game.
--- Dr. Jython; or, How I Learned to Stop Worrying and Love the JVM
(Naomi Ceder)
http://j.mp/1rlhaqu
Contrary to the title, Naomi did not seem to love the JVM. The talk was
a bit agonising for a Java native; she complained about Ant (well yeah,
Ant is a bad time in a box) but preferred Make and managing her
classpath with shell scripts. She complained about how hard it was to
pip install packages instead of simply embracing JVM libraries. Finally
she compared bad Java code against good(ish) Python code, which is
unfair and annoys me.
On the plus side, she achieved what she wanted to, which was talking to
a SOAP service with buggy WSDL. This despite the latest released version
of Jython being 2.2 (she used the beta 2.7). She did mention there's no
GIL, hence no need for b****y eventlet.
--- Keynote: Miss Adventures in Raspberry Pi (Carrie Anne Philbin)
Carrie talked about taking Raspberry Pis into schools to teach Python
with. I spent a lot of the talk hoping she'd mention Barefoot, she did
mention CAS. She talked about Scratch and how although it was great it
was also important to graduate students to text languages.
--- Miscellanea
https://www.nanoporetech.com/ had a stand with several DNA sequencers,
each ~$1000 and smaller than a phone. Seemed worth mentioning.
http://bazaar.launchpad.net/~ubuntuone-hackers/conn-check/trunk/view/head:/README.rst
conn-check knows how to check that all sorts of services are available.
Pyfakefs is good for stubbing file IO.
http://python-namibia.org/ is a thing.
Unrelated to PyCon but completely badass: http://t.co/MysUpW7mU3
There was basically no discussion of static type systems whatsoever.
I was pleased to meet not one but two prototypical PyLadies. We'll see
if a group can form. Unfortunately one just started a job and the other
can't code yet.
Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-80574998628166352012013-06-24T13:47:00.001-07:002013-06-24T13:47:15.399-07:00AngelandOnce upon a time, when we flew on wings of steel and nested like termites; when every man, woman and child could consult the wisdom of ages. An ancient race came to Urf and built a castle on an island. The walls of this castle reached further than the eye could see, and it would take a man half a year to circumnavigate. Assuming he could walk on water, for the moat of the castle was the sea itself. The castle was called Angeland.<br />
<br />
The people of the day, sick with fear and pride, cursed the ancients. They used their wings of steel to hurl fire and hate against the castle, but their wings were torn from them. Swarms of men crashed against the castle, up the walls and into the sea, but their hate fell from the sky and boiled their flesh.<br />
<br />
Then one day the door opened. The sun beat cruelly and the land scorned their pleas, so the men and women were hungry and entered Angeland.<br />
<br />
<h2>= Floor 0. Eden.</h2>
Lidar and Oogle were free for the day. Their teacher, Feo Rosefelt, had entered the Maze yesterday and their school hadn't managed to arrange a substitute.<br/>
<br/>
(They explore and discuss the Maze)<br/>
(They wander into a forbidden area and the walls begin to move. They hear faint cries and sacrifice their chance to leave moving towards them. They find a suspicious girl called Anghun.)<br/>
(They begin to explore the Maze. They are hunted by giant boar in a forest, nearly freeze crossing a mountain pass in a blizzard and are betrayed resting in a city of charcoal. Throughout this, hellish creatures pursue them and occasionally tear each other to pieces, although the children successfully evade them)<br/>
<br/>
(The number 235235 becomes a theme, through puzzle solutions and chance arrangements of features. Usually it requires conferral to discover the full number. Many other six-digit numbers also crop up, all under 240000)<br/>
(Eventually they reach the end. 24-hour news plays on vidscreens on the walls; two years have passed and their home has been obliterated by war. A large crystal glows in the center of a vast room, condensation streaming down the sides. Periodically individuals or small groups go up to the crystal, place their palms on top and disappear.)<br/>
<br/>
(Lidar and Oogle want to use the gate at 23:52:35, but Anghun refuses. Reluctantly, they enter on time and reach the next floor.)<br/>
(They are immediately faced with an angel. The angel offers them a devil's choice: serve the ancients together, or rule the Maze but forget each other. They choose to serve and are graduated to Maze Architects.)<br/>
<br/>
<h2>= Floor N. Prime.</h2>
They meet Buds, who communicates through text message rather than remove his headphones. Buds introduced the timestamp system, intended to encourage only those who could agree to enter the gate together. An unfortunate side-effect is of encouraging those who enter solo to take the lower choice. They begin to watch maze runners and take particular interest in a pair not unlike themselves. Unfortunately, Anghun, transformed into a demon, has retained enough intelligence to find ways around the rule against demons directly harming runners. She taunts the boy into hunting her, then scares the girl into searching for the boy. While they are divided, she steals their food or equipment and they are eaten.<br/>
<br/>
???
<br/>
Lidar and Oogle become magical ponies and spread rainbows everywhere. The ancient ones finally die out, satisfied the universe is in good hooves. The End.Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-53409271505223082472011-08-29T04:52:00.000-07:002011-08-29T04:52:31.008-07:00Gridmole rebornI downloaded Unity, it's pretty fun. Managed to crash it once already! Turns out update scripts get called a lot; creating one object per call makes a lot of stuff.<br />
<br />
The plan is to rewrite Gridmole under the new name Gridslam, with a 3D engine, particle effects etc. Oh and respond to more than one mouse button. Doing everything from scratch in pure JS/Canvas was extremely slow so I'm going to try Unity3D.<br />
<br />
The original concept was a healing simulator. However I'm not that interested in a fixed range of 'spells'. I'm thinking I'll use a dragbox / holdclick model with an exponential efficiency curve and an S-curve for power (with a bump at the start).<br />
<br />
<pre>Given Power (in points out of 100), Time (in seconds), Cost (points where click = 50), Efficiency.
Click: power 50, time <0.3, cost 50, E = 1
- "Flash Heal"
Held click: X = (min(T,3)*10/3)**2, S = 0.25. Power X, cost = P - X*S*P/100
- Power and efficiency both increase as you hold up to 3sec
Dragbox: S = (25+N)/100. P/N = X,
C = N(P - XSP/100)
= N(XN - XSXN/100)
= XNN(1 - XS/100)
= XNN(1 - X(25+N)/10000)
- Power is equal for all targets, efficiency increases per target.
</pre>
<br />
As a future improvement, I could add shield mode (-10% effi, adds secondary HP pool) and HOT mode (healing is delivered over T**3 secs, for some efficiency bonus).<br />
<br />
So far this is a very smooth design. It needs some bumps to create pressure. The bumps will come from irregular incoming damage. Levels will consist of a number of Hurts, with an attack pattern (EG row, column, random(5)), frequency (probability of occurrence) and power level. With this degree of randomness, I'll need to cap the short-term DPS or (very) occasionally the system will go totally psycho.<br />
<br />
When blocks take damage they will wobble and overextend towards red before returning. I'd like to add warning indicators to Hurts, which would make the shield mode more interesting and allow for prehealing. Ideally this would be meteors and dragons, but I'll settle for a red backdrop for now.<br />
<br />
TBCAnonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-30340965486358720182011-07-12T05:25:00.000-07:002011-07-12T05:25:00.601-07:00Roller lifeWith reference to: http://spectrum.ieee.org/automaton/robotics/robotics-software/042910-a-robot-that-balances-on-a-ball<br />
<br />
It's hard to imagine a wheeled creature evolving. Scifi provides few examples, I believe David Brin touched on it (along with some very intriguing waxy-toroid creatures).<br />
<br />
Let's imagine a Rolla bird. It is flightless but egg-laying, with thick fluffy feathers. The baby Rolla hatches in late Spring, as the first rays of sun strike its icy habitat and begin the thaw. It immediately lays an egg (unfertilised), half the size of the bird itself, and makes its first attempts at balance. As the thin snows clear, revealing the smooth glacier ice formed over polar volcano flows, movement becomes easier.<br />
<br />
The Rolla sets out with its siblings in search of food. A pygymy spruce local to the area offers up pine nuts, just within reach of the infants. The pine nuts are difficult to digest for the small stomach of the baby bird and a substantial part is injected into the egg under its feet.<br />
<br />
As the Rolla matures, this contribution is enhanced with additional enzymes and organisms. A nucleus forms within the mass of waste which becomes like a second stomach. The hardest parts, mostly bits of cone, are pumped outwards through a constantly extending network of cracks to expand and reinforce the egg. Softer parts which still carry nutrition are retained in the centre.<br />
<br />
After a couple of months the Rolla has reached adulthood and migrates in search of a mate. Rollas are hermaphroditic and exchange ova while still upright. The foreign ova, injected into the egg, is fertilised by the DNA therein and begins to divide. The by-now thoroughly decayed soft food waste is consumed to fuel the growth.<br />
<br />
No more than a month after conception, the adult Rolla bird lies down for the first and final time. Its frantic summer of feeding is over and winter stands in the wings like Death, beyond survival. As the days draw in, the adult dies and the egg is slowly buried in the snows. The thick outer shell and battery of nutrition will sustain it until the land is inhabitable once again, and this most independent of birds will hatch again.<br />
<br />
--<br />
<br />
I tried to introduce a couple of evolutionary triggers - a low-hanging food source and a killer winter not even a penguin could survive. The glacier ice is an attempt to explain WTF the place is flat enough for a wheel to work. It's still not the most probable of creatures but not entirely beyond imagination I hope!<br />
<br />
The parent who dies before the child is born is rather compelling. Every year a new generation would be totally alone. It'd be interesting to extend this to a small planet, with an extremely long year and a civilizing race. Born in the snowy tropics, slowly migrating to the poles as the equator becomes uninhabitable then back again to breed and die. Each generation would discover the artefacts of the last as if a foreign people. The standard tradition vs discovery dichotomy would have to be reexamined when 'tradition' (IE following the example of prior generations) requires discovery. And of course there is a great, unavoidable extinction every generation.Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-19185814405404247652011-07-11T15:54:00.000-07:002011-07-11T16:00:06.499-07:00Crazy cat manWorking towards my lifegoal of being eaten by my cats when I die, I've decided I will need a cat. I tried the Blue Cross initially but they don't have a Bristol centre. Foop. I tried a few others, including one VERY unfriendly site that pretty much said "Halo + mansion or GTFO" - and didn't even have any cat listings up! The RSPCA site was ok but they only have a few cats listed which is a shame as they must have a hundred waiting. I flatter myself that in this net-savvy generation there are an increasing number of consumers who like me are happiest not even contacting a provider until we know exactly what we want!<br />
<br />
Fortunately I tripped and fell heavily upon <a href="http://www.bristolandwalescatrescue.com/catsforadoption.htm">Bristol and Wales Cat Rescue</a>. They work out of people's homes which could a) mean they're big-hearted animal lovers doing their best on the cheap, b) a scam. However they have cat macros on the site! This substantially enhances their credibility. Also they have a cute rollerskating chick. A girl that is, not a baby chicken, though that would be MOST amusing.<br />
<br />
I was planning on picking up a little princess but experience must be sinking in at last as I've decided an elder statesman will suit my lifestyle much better. Maestro the 14 year old, barrel chested and fit as a fiddle. Well, barrel shaped somewhere as he is 6kg. And possibly only fit as a <b>very well-loved</b> fiddle considering his heart murmur and the dental work he's just had done. I shall be purchasing insurance for the wee beastie.<br />
<br />
On which topic - FOR SCIENCE! At least, a spirited inquiry. Animal Friends insurance is dirt cheap which reviews say translates directly to being treated like dirt. Sainsbury's allegedly double your premium after a year even if you don't claim, and do not necessarily inform you of this despite the terms of the direct debate mandate. Some others are also full of shit. More Than appear to possess something of a monopoly position in the market for "insurance wot pays up" so with their good selves I shall entrust the care of my feline companion.<br />
<br />
Gosh I'm long-winded. Brevity may be the soul of wit, but verbosity is the full English breakfast. And so to vittels. Cats are naturally carnivorous in contrast to my addled self. I appear to be pursuing an oxygenarian or at least <a href="http://t3.gstatic.com/images?q=tbn:ANd9GcSCPC2EcjtDzJXC8ttoz7kkty-OazDrC3Qs9e1aj3jEkPrUjI6W">breadhead</a> diet. Anyway while I'm not about to start force-feeding the poor creature spinach, I'd rather it didn't eat a) anything which hopes to be fois gras in its next lifetime, b) total crap. Item A rules out pretty much anything from Tesco. Item B is a slippery slope which begins with eliminating bacon flavour lard balls and ends with me preparing chicken sushi garnished with intestine and liver pate. Damned if my pet is eating better than me.<br />
<br />
Suddenly! Bristol! It turns out one of the better kibbles is available from <a href="http://roxfordsthepetshop.co.uk/">Roxford's</a> which is about 25mins walk from my house. I'll probably drive since I'll be carrying about 10kg of used animal tissue home. Here's a <a href="http://maps.google.co.uk/maps?f=q&source=s_q&hl=en&geocode=&q=155+Gloucester+Road&aq=&sll=51.471428,-2.561989&sspn=0.011121,0.022445&ie=UTF8&hq=&hnear=155+Gloucester+Rd,+Bishopston,+Bristol,+Avon+BS7+8BA,+United+Kingdom&ll=51.479672,-2.591529&spn=0,0.022445&z=16&layer=c&cbll=51.474111,-2.591534&panoid=LUlYWyQ_AKdH_LNKGjpHxg&cbp=12,69.34,,1,8.26">picture</a>.<br />
<br />
So it looks like the scragball will cost about £22 in insurance and £18 in food (70g/day @ £21/2.5kg) per month. Ouch. He may have to subsist on Whiskas or some other proletarian gruel for a little while. On the plus side I may save on hot water bottles.<br />
<br />
<h1>Go ducky gogogo!</h1><img src="http://farm7.static.flickr.com/6143/5928190196_4d0ff1b34a.jpg"/><br />
<br />
Took about an hour. I made those clouds by hand then just as I'm finishing off I discover GIMP has cloud filters! Oh well, next time. I used some HSV noise and blur filters for the road, which was nice because drawing all those little dots would have taken FOREVER! The skate wheels have some DIY noise on them courtesy of an elliptical mask and the Galaxy brush, but noise filters are so much better.<br />
<br />
It's time for bed. Tonight I have researched cat insurance, researched cat food, written a blog post about researching cats and drawn a ducky. Who says you go crazy when you live alone?!Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-69653833300142517192011-06-09T13:39:00.000-07:002011-06-09T13:39:15.102-07:00All action non stop internet dragon pwnage!The only two things I really like about MMOs are new quests and fighting bosses. Quests require this whole persistent world, they're expensive. Screw that.<br />
<br />
Let's make a game all about killing bosses. None of the fluff around it. You connect to the lobby. You pick your class, maybe tweak it a LITTLE. Not 12 items with gems and enchants, no way. More "blue Rohan" (fast hitter) or "red Rohan" (heavy hitter). Maybe 10 total skills, roughly half for core rotation the rest for utility.<br />
<br />
Gear progression naturally works the wrong way. The game gets easier as you get better. Instead, kills on low difficulty modes should unlock higher difficulty modes. Alongside that, a ladder will control who you are grouped with to avoid that "waiting for everyone to get it" feeling. Since the game will have no persistent world, there's no need to shard the playerbase, keeping wait times low.<br />
<br />
Let's make it free to play! Give away maybe 9 bosses in 3 arenas for free. Release a new paid DLC boss every... week? Is that really so much to ask? Offer a discount all-new-bosses sub and heavily discounted old boss bundles. Obviously it'll be easiest to find groups for the new bosses and all the buzz will be around the new bosses.<br />
<br />
Let's make it fast! A raid boss is a natural 20 minute encounter. That's snacksize! You can do one before dinner without ruining your appetite (or being late to table). Let's put the tactics video right in the goddamn game, played by the devs, with their kill time for all the world to see. You can skip the video if you want to play blind or try to beat the devs if you're hardcore.<br />
<br />
Ladder prizes... hmm... say, get to design a boss? :)<br />
<br />
--<br />
<br />
The impetus to writing this up was my survey submission to Trion after quitting Rift. I figured hey, even if they steal it without credit, I want to play it! But just in case I'll post the exact text I sent them here.<br />
<br />
Make a PvE version of Bloodline Champions. With matchmaking by ladder.<br />
Free to play, new bosses cost, old bosses available in packs.<br />
Progression up difficulty settings, not gear.Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com5tag:blogger.com,1999:blog-5265000393516581302.post-16094851256878725442011-02-25T18:59:00.000-08:002011-06-09T13:41:51.717-07:00Dwarf FortressI have downloaded the Lazy Newb Pack and am using Mayday tileset. I chose a smaller world because I am afraid.<br />
<br />
Behold, as Sestanilush - The Decisive Carnage - sets off to found the great fortress of Lamlokast (Stonebutcher).<br />
<br />
Ral Dodokoshur - Novice Leader, Amateur Sawbones<br />
Mosus Stakuderib - Extreme Mining League<br />
Olon Moruldolush - Ultimate Mining Union<br />
Thikut Rabkulet - Deadcarver<br />
Rovod Kekimedem - Mighty Masonry Inc<br />
Fikod Atolzon - Lumberjack, soldier and teacher<br />
Litast Dalkamgoden - Brewmaster General<br />
<br />
Strike the earth! It called your mother a rude word.<br />
<br />
The blasted wagon gave out near what is less a mountain, more a hillock. I plan to erect a statue garden on top for sunlight, good cheer and possibly a scouting tower. The rest of the settlement will be two levels down from the entranceway for security. There is sufficient space on ground level for a trade station in the entryway.<br />
<br />
I plan to build around a central stairway. This should help me utilise the Z-axis for efficiency and possibly I could flood it (given a suitable sink) to irrigate farms and/or fertilise with goblinflesh. It may alternatively provide a buffet selection to marauding elfs.<br />
<br />
Light is fading. We need stone and woodworking facilities up as soon as possible so that we might fashion beds. Bedrooms, a kitchen and a still are second priority.<br />
<br />
Magnetite! From this we shall eventually extract iron and craft many cunning implements.<br />
<br />
--<br />
<br />
It has been some time now and I have several workshops up. I have even begun irrigating a farm, although progress is slow with our single bucket. Earthworks have been ordered to channel a nearby lake. I am concerned about Olon, she is staring at the door to the farm most intently.<br />
<br />
--<br />
<br />
Yeah that didn't last long. I love the idea and READING about it, but the micro requirement is just crazy.Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-70887189347123433022011-02-11T11:41:00.000-08:002011-02-11T11:46:01.474-08:00Guinea pig valhallaI am dull. SUPER dull.<br />
<br />
However I did draw a picture of a guinea pig in guinea pig valhalla.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjjLxhVJlSefnA347b1BOnjUeYSMeD5MSmj2susHoyF8vxZE_x0xi-Nd-ObU1LxWqjVdnTkClssjATrEXbVZV9iiiYrOGxMW4xsTzKr6ATF9EAu9fBI8VY9CfEx5qXXpX4r-5CWrJUeTk/s1600/gpigwarr.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="234" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjjLxhVJlSefnA347b1BOnjUeYSMeD5MSmj2susHoyF8vxZE_x0xi-Nd-ObU1LxWqjVdnTkClssjATrEXbVZV9iiiYrOGxMW4xsTzKr6ATF9EAu9fBI8VY9CfEx5qXXpX4r-5CWrJUeTk/s320/gpigwarr.jpg" width="320" /></a></div><br />
The West Wing is a very good show indeed.<br />
<br />
This is a good way to write Javascript:<br />
<pre style='background-color: #eee; color: #421; padding: 4px 8px;'><code>var LXS;
LXS = LXS === undefined ? {} : LXS;
LXS.MyClass = function() {
var privateVar = 5;
function privateFunction() {
return privateVar;
}
var pub = function MyClass() {
this.aVar = 2;
};
pub.prototype.publicMethod = function publicMethod() {
return privateFunction() + this.aVar;
};
}();
</code></pre><br />
It's a lot like the Module pattern Doug Crockford proposed except it's a class. It probably isn't very original but I like it just the same. It helps you keep everything in a single global variable. I typed it from memory so it might be a bit wrong.<br />
<br />
rice-boy.com and dresdencodak.com are wonderful. Gunnerkrigg Court is not drawn nearly fast enough and I'm trying to forget Girl Genius exists because I want more. Drive comic is very promising. I don't know why I like harkavagrant.com but I do!Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-26513405244159591172010-11-29T10:58:00.000-08:002010-11-29T11:00:10.546-08:00I got that BOOM BOOM POW!Graylo's guide, redux.<br />
<br />
Refresh MF/IS as prio, pref before expiry but wait <2-3s for Eclipse<br />
Starsurge, don't wait<br />
FoN/SFall on CD, SF is lunar<br />
Nuke!<br />
<br />
Move as MF/IS/MF+, SS if instant <br />
<br />
Glyph IS/Wr/MF, maybe SS;<br />
SF/Rebirth/Thorns<br />
<br />
Int > Hit > SP > Haste > Crit > Mastery <br />
<br />
int > hit! o.O<br />
<br />
http://graymatterwow.blogspot.com/2010/10/moonkin-guide-to-patch-401.htmlAnonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-21941392153589540962010-09-12T04:38:00.000-07:002010-09-12T04:38:07.479-07:00QC, PQ2 + Chuck... are what have mainly been occupying me in this second glorious week of holiday. These being <a href="http://www.questionablecontent.net/view.php?comic=1454">Questionable Content</a>, Puzzle Quest 2 (on Steam) and a show about a nerd who gets sucked into the CIA. The first of these inspired this picture of Hello Kitty in Mirrorworld. <br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFKxXGLsieDi7baBpV-0Oks5Xn8-VGUhg6sACz1ARIyW2s4whrHADfR6B1_VsVfY4Su30Tu3vap1x3jY2bnepFvYXhCrpFALSuwgowTxFX71NN98-i9H4oOnh54MQLwqejywX2iymL0KI/s1600/mirrorkitty.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFKxXGLsieDi7baBpV-0Oks5Xn8-VGUhg6sACz1ARIyW2s4whrHADfR6B1_VsVfY4Su30Tu3vap1x3jY2bnepFvYXhCrpFALSuwgowTxFX71NN98-i9H4oOnh54MQLwqejywX2iymL0KI/s320/mirrorkitty.jpg" /></a></div>I hope you like the unicorn, I probably ended up spending more time on that than the whole rest of the picture. It boggles my mind the number of hours comic artists routinely expend. QC has 1500 or so pages, each of which took 10 hours or so. If it was a 9-5 job that's 7.5 years of labour.<br />
<br />
Quite evidently I'm loving my graphics tablet (Wacom Bamboo Fun, large). The touch interface can be finicky, it's hard to get it to recognise the zoom and rotate gestures sometimes. The pen is spot on as you might expect; I'm getting used to not pushing the buttons on it by accident. The eraser end is really convenient, in the GIMP it can have its own tool + FG/BG colours set.<br />
<br />
Besides making childish drawings, I've been using it to read QC and play PQ2. It's not the best device for web browsing really, but I've been using it so much that switching back to the mouse feels like a pain! For 'casual' games like PQ2 or Plants vs Zombies, which are really designed for a touch interface anyway, it's perfect. I did try playing Starcraft 2 with it but - no. There are two buttons on the pen, one of which acts as RMB and the other... I'm not quite sure. They're not designed to be used frequently though, I find them a bit awkward. SC2 uses RMB a lot so the tablet doesn't really work, sadly.<br />
<br />
I really recommend Chuck btw. The agent girl voiced Miranda in Mass Effect 2 and it features the ever-awesome Adam Baldwin as well. He's been in Angel, Firefly and Full Metal Jacket. I'm thinking of putting up posters of actors after I move into my new house (squee), but it'll be hard to avoid having the whole cast of Firefly up! My favourites are probably Mal, Jayne and of course Kaylee.<br />
<br />
Feel free, if you wish, to take a moment to daydream on the flash of wonder that was Firefly. Now, for my post-closing question I was going to ask who they are. I would much rather someone riddle me this: what does it mean if something boggles your body? Illustrations welcome, although if I should not be eating when I look at them I'd appreciate a warning.Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com1tag:blogger.com,1999:blog-5265000393516581302.post-87905449111994713912010-08-30T07:36:00.000-07:002010-08-30T07:36:11.580-07:00Part le deuxieme14:56 - [O7]Garth: I was typing, about that Thorim 2.0 fight<br />
14:56 - [O7]Garth: It's like Twin Valkyrs meets 4 horseman in 1 boss<br />
14:56 - Alexis: Hmm, yeah<br />
14:57 - Alexis: I loved tanking 4H as a tree and I loved mage tanking in the HKMaulgar fight<br />
14:58 - [O7]Garth: You could make it with a teleport to start of gauntlet kind of thing<br />
14:58 - Alexis: I liked the Solarian fight where any DPS can kill you<br />
14:58 - Alexis: It seems a good thing for raid flavour when the DPS have real responsibility, besides their rotation<br />
14:58 - [O7]Garth: Group 1 fighting boss G2 fighting the adds. When you start fighting Thorim 2.0 You have a +150% damage buff. And it slowly diminishes<br />
14:59 - Alexis: Yup that also occurred to me<br />
14:59 - Alexis: I was thinking of ways you could make people want to do 4/6 or 3/7 setups as they got good<br />
14:59 - [O7]Garth: G2 has to battle through the arena to Take over and start with 150% buff again. Once they enter G1 gets teleported out to the start of a gauntlet and it starts over<br />
14:59 - [O7]Garth: So if the gauntlet is slacking, damage will be low (too low/enrage)<br />
14:59 - Alexis: Ahh I see, not what I was thinking at all<br />
15:00 - Alexis: I like it though<br />
15:00 - [O7]Garth: Yeah, the latter just popped in :) didn't read your part yet :D<br />
15:00 - Alexis: I loved the Thorim 1.0 beginning part too, where the arena team are embattled and slowly getting more desperate for their friends to charge to the rescue<br />
15:00 - Alexis: really cool social engineering<br />
15:00 - [O7]Garth: Yeah<br />
15:01 - Alexis: Hmm - an extension to the raid-only idea. You could charge per boss. So at any time you can go "F2P" by no longer buying bosses. Package old "tiers" into cheap bundles and eventually just give them away basic<br />
15:01 - [O7]Garth: The arena/gauntlet part was the "epic" part though, Thorim was cake, unfortunatly<br />
15:01 - Alexis: It sounds expensive but if you made each boss say £3-4, it'd be hard to resist<br />
15:01 - [O7]Garth: F2P?<br />
15:01 - Alexis: and, it'd cost less than a wow sub!<br />
15:02 - Alexis: Yeah. F2P is good because lots of gamers are poor<br />
15:02 - [O7]Garth: what is it?<br />
15:02 - Alexis: Oh, free to play<br />
15:03 - Alexis: The game company wins because on average people spend more than they would on a sub<br />
15:03 - Alexis: The people win because they get the flexibility to keep playing at no cost if they're broke one month<br />
15:03 - [O7]Garth: Ah, I like F2P:D<br />
15:04 - Alexis: A wow sub is £9/month btw. You could probably charge £5 / boss, with a base rate of 2 / month + bonuses now and then<br />
15:04 - Alexis: That model would really inspire you to create bosses people want to buy as well :)<br />
15:04 - [O7]Garth: only "problem" I see, is if it's with guilds, you need to buy it, you can't do boss X when 9 out of 10 people have it. Peer pressure?<br />
15:05 - Alexis: Peer pressure? Did I build peer pressure into my pricing model? Oh dear. That was naughty.<br />
15:05 - Alexis: *snicker*<br />
15:05 - [O7]Garth: O_o<br />
15:06 - Alexis: No guild runs 10mans with only 10 people. Holidays happen, poor periods happen<br />
15:06 - [O7]Garth: the F2P also lets players make their own bosses<br />
15:06 - Alexis: Huh?<br />
15:06 - [O7]Garth: I mean<br />
15:06 - [O7]Garth: They'll suggest bosses you can use, so the development team can be small<br />
15:07 - [O7]Garth: I'm drifting off now :)<br />
15:07 - [O7]Garth: Back on topic!<br />
15:07 - [O7]Garth: Would the fee be needed in the first place?<br />
15:07 - Alexis: Yeah encouraging suggestions would be a good idea... providing you don't make foolish promises ofc<br />
15:08 - [O7]Garth: I know nothing about gaming and development, and games need people to keep it updated etc. But The less people have to pay the more will play. Alien swarm is a games almost everybody in my steamlist has downloaded and played<br />
15:08 - [O7]Garth: And still do<br />
15:08 - [O7]Garth: well not daily, but sometimes :d<br />
15:09 - Alexis: You could give away 10 bosses free, probably. Kind of an "infinite trial"<br />
15:09 - Alexis: I don't like the box cost of wow at all<br />
15:10 - Alexis: As I see it, getting people to install your game is the hard part because you have very little influence over their behaviour at that point - just marketing<br />
15:10 - Alexis: Once you're in, it becomes about the quality of your product + your ongoing pricing strategy<br />
15:12 - Alexis: So yeah free trial because everyone likes something for nothing. Once they've sampled the candy and got over the initial learning curve, buying the latest boss for £4-5 so you can play with non-noobs is a natural<br />
15:12 - Alexis: By that point they know how to play, have hopefully had a great time they want more of and have already spent money<br />
15:13 - [O7]Garth: True<br />
15:13 - Alexis: Spending the next amount of money is easier, because they have already decided your product is worthwhile and they want to validate that decision<br />
15:13 - Alexis: Plus hopefully they have started to make social connections<br />
15:13 - [O7]Garth: They'll be hooked, hopefully<br />
15:13 - Alexis: That is more or less what I am saying, yes :D<br />
15:14 - [O7]Garth: And then the moneymaking can commence *evil laughter*<br />
15:14 - Alexis: I'm no sales guru but I know putting big barriers to entry is poison<br />
15:14 - [O7]Garth: One of the reasons I'm not buying SC2<br />
15:15 - Alexis: Hmm... SC2 for me is a terrible business. Then, they didn't make it for me<br />
15:15 - Alexis: It has a massive sticker cost and immense learning curve... you have to REALLY want to play it<br />
15:16 - [O7]Garth: Yeah<br />
15:16 - [O7]Garth: And once you bought it, you kinda want the Zerg and Protoss part as well<br />
15:16 - Alexis: Hmm - that didn't really work on me<br />
15:16 - Alexis: You can play all 3 races in MP with the first box<br />
15:17 - Alexis: I assume they'll be introducing new MP units for all races in each expansion; the SP terran is much richer than the MP<br />
15:18 - [O7]Garth: Oh, only played a couple of Terran SP levels<br />
15:18 - [O7]Garth: New units.... perhaps<br />
15:18 - [O7]Garth: I think just story mode's<br />
15:18 - Alexis: My impression is that most of the playerbase want to play MP<br />
15:19 - [O7]Garth: Yeah, probably<br />
15:19 - Alexis: The SP is to hook in people who don't realise they want to play MP yet<br />
15:19 - Alexis: On that basis, they have to enrich the MP every time or MP-ers just won't buy the expansion - while consuming infrastructure<br />
15:20 - [O7]Garth: But Story is important as well for (blizzards player base, I think) So having done the SP will be fun/interesting/ good to learn it (new things?)<br />
15:20 - [O7]Garth: Well, SC1 is still being played (prior to SC2 release that is)<br />
15:20 - Alexis: Oh sure story is important, everyone will play the SP<br />
15:21 - Alexis: but MP is the lasting appeal and if people are making a buy/nobuy decision, zero MP extension is going to weight that decision heavily<br />
15:22 - [O7]Garth: For a MP?<br />
15:22 - Alexis: huh?<br />
15:23 - [O7]Garth: WEll<br />
15:23 - [O7]Garth: I mean, single players need to be extended to keep players interested<br />
15:23 - [O7]Garth: But afaik, MP's have that problem far less<br />
15:23 - [O7]Garth: Everytime you play it's different<br />
15:24 - Alexis: MPers will keep playing no matter what<br />
15:24 - [O7]Garth: Making the need for new content less<br />
15:24 - [O7]Garth: Yeah<br />
15:24 - Alexis: but the question here is, how do you make them buy the next box?<br />
15:24 - Alexis: it has to have SP in it, but if that's all there is, I think a lot of MPers will keep playing but not buy the box<br />
15:24 - [O7]Garth: Ah<br />
15:24 - [O7]Garth: Right<br />
15:25 - [O7]Garth: But if you have 1-2 extra units in the box<br />
15:26 - Alexis: then anyone who doesn't buy it is at a handicap<br />
15:26 - [O7]Garth: There will be a problem when people play with or without box. It'll be unfair/<br />
15:26 - [O7]Garth: Yeah<br />
15:26 - Alexis: which is UNTHINKABLE to any pro gamer<br />
15:26 - [O7]Garth: Or make different "ladders" worlds" for them?<br />
15:26 - Alexis: Why would Blizz do that?<br />
15:27 - Alexis: I mean unless they don't like making ridiculous mountains of money<br />
15:27 - Alexis: History appears to show to the contrary...<br />
15:27 - Alexis: Some players might complain, but - screw them, cheapass gits<br />
15:27 - Alexis: I think it's pretty well understood that if you don't buy the product you get an inferior service<br />
15:28 - [O7]Garth: Heh<br />
15:28 - Alexis: You can choose not to buy TBC/LK, but Blizz don't go out of their way to help make that a sensible option<br />
15:28 - [O7]Garth: If you do buy it: more monies, if you don't buy it, stop playing and still have money from that first box you mean?<br />
15:29 - [O7]Garth: Yeah true<br />
15:29 - Alexis: Well - you buy the first box, get a certain amount, are happy. Yay<br />
15:29 - Alexis: You either buy the 2nd box and get more content, simple.<br />
15:30 - Alexis: Or you don't buy the 2nd box and keep the same amount of content. You're probably less happy than before because now relatively, you have less to everyone else; and most people have moved on<br />
15:30 - Alexis: That's really not Blizz' fault though, keeping up with the crowd always entails a cost<br />
15:31 - Alexis: If you have some very good friends they might agree not to buy the box either and that's your decision<br />
15:32 - [O7]Garth: Hmm, I guess :/<br />
15:32 - [O7]Garth: Hard to argue against that<br />
15:32 - Alexis: I have to post something - see you soonAnonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-38521506781421033762010-08-30T06:56:00.000-07:002010-08-30T07:22:00.710-07:00MMO ideas13:36 - [O7]Garth: http://www.youtube.com/watch?v=3G5fLe3G8GY<br />
13:37 - [O7]Garth: Wrong one<br />
14:12 - Alexis: that was pretty impressive<br />
14:12 - [O7]Garth: Yeah<br />
14:13 - [O7]Garth: And the speedrun achievement for that one is 4.5 minutes, so they beat it by more than 90 seconds<br />
14:13 - Alexis: heh<br />
14:15 - Alexis: there's gotta be a way to mix up achievements + ladders. And a way to present it so knowing you're the 5,382,786th best player doesn't feel quite so crushing<br />
14:16 - Alexis: like "You are in the top 19.82% of players"<br />
14:17 - [O7]Garth: Uh-huh<br />
14:17 - [O7]Garth: Top 20 sounds good enough<br />
14:17 - [O7]Garth: Are there ladders?<br />
14:17 - Alexis: Say the LK kill<br />
14:18 - Alexis: Allocate a certain amount of points overall; you get a %age of them compared to how fast you do it between the best and worst scoring times<br />
14:19 - Alexis: So Paragon get the whole 1000 points since presumably they've done it so many times they have the fastest time<br />
14:19 - Alexis: We get like 400 points for doing it slowly<br />
14:20 - Alexis: Maybe a bonus for doing it with lower buffs<br />
14:20 - [O7]Garth: And I presume Blizz has set a standard then. Killtime: 13 minutes average dps 8K average hps 5K etc<br />
14:21 - Alexis: I assume they do, but I'm figuring Blizz just says 1k points available and the fastest time gets 1k points<br />
14:21 - Alexis: Everyone slower gets some amount less<br />
14:21 - Alexis: Until the slowest run that is someone's fastest, who gets say 100 points<br />
14:23 - Alexis: There's a certain mindset that "progression" guilds have that "friendly" guilds don't, allowing gradations of achievement might<br />
14:23 - Alexis: help make people think of efficiency<br />
14:23 - Alexis: maybe 500-800 points as a min would be better<br />
14:23 - [O7]Garth: How to calculate gear though? better gear is faster, or is it all about speed?<br />
14:23 - Alexis: Gear is ignored<br />
14:24 - [O7]Garth: I best isn't fastest. Or are we just talking about speed now?<br />
14:24 - Alexis: The fastest time will go down over time, as the top guild practices + gears up<br />
14:24 - Alexis: Hmm - I'm equating best + fastest, since you need to a kill to even rank<br />
14:24 - [O7]Garth: I mean, the Timor station speedrun was done with grenade launchers (level 27) what if you can do it without, at alower level<br />
14:24 - Alexis: Oh and I'm talking WoW :)<br />
14:25 - [O7]Garth: Yeah, I know, but I couldn't finda way to make it explain with wow :d<br />
14:25 - Alexis: That's because gear in AS = spells, qualitative differences. Gear in wow = more of the same, quantitive differences.<br />
14:26 - Alexis: So gear in wow can be neglected for speed ranking purposes, but not so much in AS... for AS I'd assume everyone is max stars + level :p<br />
14:27 - [O7]Garth: Those guys? I guess :D<br />
14:27 - [O7]Garth: but yeah, everybody will have the same gear etc<br />
14:27 - Alexis: Yeah<br />
14:27 - Alexis: It gives me another thought<br />
14:28 - Alexis: What if you could take WoW, strip the raids out and stand that up as a game?<br />
14:28 - Alexis: So like in the lobby you pick a class, gear build, talent build etc. Then you just pick a 'map' and boom<br />
14:28 - [O7]Garth: A co-op boss killing game?<br />
14:28 - Alexis: Yeah<br />
14:29 - Alexis: Like SC2 MP has no open world, no research, you just pick a race and go<br />
14:29 - Alexis: What if in WoW you could just pick a build and go?<br />
14:29 - [O7]Garth: hmm I don't know, If we keep the same difficulty in boss fights etc, and keep loot/progression in the game.<br />
14:29 - [O7]Garth: I can think of a problem<br />
14:30 - [O7]Garth: If you make it that simple, the game becomes fast<br />
14:30 - [O7]Garth: And WoW/Raids isn't about speed, you need coordination, time, communication etc<br />
14:30 - Alexis: Nah no loot - you pick your ilvl as difficulty level<br />
14:30 - Alexis: People do all that for SC too<br />
14:30 - [O7]Garth: Speedy games don't like it cause people join/leave when they want<br />
14:31 - Alexis: PUGs would be pretty horrendous I grant you :)<br />
14:31 - [O7]Garth: I mean, if you want to do the LK you need to play with friends to learn it slow<br />
14:31 - [O7]Garth: Or it will be crapfest<br />
14:31 - Alexis: Well - that's just like joining a PUG<br />
14:31 - [O7]Garth: Yeah<br />
14:31 - Alexis: yeah, anyone half decent will join a guild<br />
14:32 - [O7]Garth: But then it doesn't become a loose game like AS or Borderlands or something else that's fast and guildless<br />
14:32 - Alexis: THat's not the idea<br />
14:32 - [O7]Garth: Aha<br />
14:32 - Alexis: You can't play coop SC2 at a high level without friends either<br />
14:33 - [O7]Garth: SC2 is starcraft right?<br />
14:33 - Alexis: THe idea is to get rid of flying around, having to enchant gear, having to level up etc etc<br />
14:33 - Alexis: yeah<br />
14:34 - Alexis: If a games company didn't have to make quests, open world etc they could do so much more raid content<br />
14:34 - [O7]Garth: Hmm, it does sound interesting, but I do see some "problems"<br />
14:34 - [O7]Garth: That's true<br />
14:34 - [O7]Garth: Did'nt calculate that in yet<br />
14:34 - Alexis: Basically WoW is 3-5 games all in one<br />
14:34 - Alexis: which is nice because it gives you a change, but causes friction too - like I will never get the pvp achieves<br />
14:35 - [O7]Garth: but people who play a game need to be entertained by new content or challenges or different mode's, achievements etc.<br />
14:35 - Alexis: If they could split the games out, I could play Leveling when I feel like it, Raiding when I feel like that<br />
14:35 - [O7]Garth: Or the hunt for loot<br />
14:35 - [O7]Garth: I mean Ignis can be so dull etc, but it's being done cause of the loot and when you get it, you're happy.<br />
14:35 - Alexis: Achievements<br />
14:36 - [O7]Garth: With no loot, no journey to/from, you will be bored with it after a couple of raids, so new content need to be out fast<br />
14:36 - Alexis: I mean you could throw some unlocks etc in to give extra motivation for initial tries, but the ultimate goal is speed<br />
14:37 - Alexis: What if instead of releasing 14 bosses at once, they released 1 boss / 2 weeks?<br />
14:37 - Alexis: I think that might even be slower than Blizz<br />
14:38 - [O7]Garth: 1 boss in 2 weeks.<br />
14:38 - [O7]Garth: Hmm not enough I think<br />
14:38 - Alexis: You would focus hard on each boss, pushing your time down, but never get totally bored with the game because in average 1 week, there's a new boss<br />
14:38 - [O7]Garth: Does the old one disappear?<br />
14:38 - Alexis: and you can always go back and work on old ones a bit more if you're hardcore and want to push your score<br />
14:38 - [O7]Garth: Ah right<br />
14:38 - Alexis: That's another beautiful thing<br />
14:39 - Alexis: Because of the gear/level treadmill, bosses go out of date in wow<br />
14:39 - Alexis: if you tie all that to a difficulty level instead, your content never dies<br />
14:39 - Alexis: I mean... some of it will start looking pretty gash... but people don't have to do it<br />
14:39 - [O7]Garth: I like that<br />
14:40 - Alexis: 1/2wks could be the 'base rate', with bonus boss weekends<br />
14:40 - [O7]Garth: but, maybe build a difficulty level in it as well?<br />
14:40 - [O7]Garth: Like you cant go to boss X without level Y<br />
14:40 - Alexis: Yeah the biggest issue I see is teaching people to play<br />
14:40 - [O7]Garth: Oh wait, you mentioned unlocks already :D<br />
14:41 - Alexis: :D<br />
14:41 - [O7]Garth: Training rooms?<br />
14:41 - Alexis: Yeah. Simple bosses with restricted skill sets<br />
14:41 - [O7]Garth: Wow Is ofcourse a big trainingroom to rest skills and spells and other stuff<br />
14:41 - [O7]Garth: Choosing your talent from scrap is hard<br />
14:42 - Alexis: Yet, a very poor one. You can't really learn to tank while levelling<br />
14:42 - Alexis: and healing is nonrepresentative, most of the fun/difficulty comes from multiple targets<br />
14:42 - [O7]Garth: Could make it more mobile though, Not all of them require a tank, more of a berserker(borderlands) kind of class?<br />
14:43 - Alexis: Well... I like the tank-cooldown model<br />
14:43 - [O7]Garth: Less complicated, more with synergy<br />
14:43 - Alexis: Imagine if every DPS class had an Evasion equivalent, and a taunt<br />
14:44 - Alexis: the evasions wouldn't have to be identical... some could be selfhealing, some absorbs, some magic-resist, some armor - etc<br />
14:44 - [O7]Garth: That will be chaos<br />
14:44 - Alexis: Until you learn to control it :)<br />
14:44 - [O7]Garth: people will taunt from eachother etc<br />
14:44 - Alexis: that's the idea<br />
14:44 - [O7]Garth: How many people?<br />
14:45 - Alexis: 5-10<br />
14:45 - Alexis: We're mixing up two ideas now<br />
14:45 - [O7]Garth: Cause, it's hard enough, at times to get a good 3 man interuption rotation going, let alone a 5-10 man taunt rotation<br />
14:45 - [O7]Garth: I'm not negative on all it, I just someone who thinks about negative sides of stuff before the positive side btw :)<br />
14:46 - Alexis: I imagine most encounters would be multiple boss, so you'd break into 2-3 teams and have some people sit out of taunt rotation<br />
14:46 - Alexis: It's easy to get excited about game ideas, much harder to defend them<br />
14:46 - Alexis: There's so much cool stuff Blizz have tried, that the playerbase just broke, lol<br />
14:47 - Alexis: For a tough fight - imagine twin emperors<br />
14:47 - Alexis: You have 3 people tanking one; 3 the other; 4 handling adds<br />
14:47 - Alexis: at set points, the 3 teams swap because they've been debuffed<br />
14:48 - Alexis: or you could have a thorim like map - 5 people at the bottom, 3 on thorim, 2 on adds<br />
14:48 - Alexis: 5 people up top just DPSing like nuts<br />
14:48 - Alexis: at a given point, the top 5 have to click an orb and jump down, in time to let the bottom 5 escape<br />
14:49 - [O7]Garth: Escape?<br />
14:50 - Alexis: Up to the top :)<br />
14:50 - Alexis: Say the boss has an evil damage aura and the orb gives you a limited time resist buff<br />
14:50 - Alexis: with a cooldown period which forces you to use 2 teams, so as to get 110% time coverageAnonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-79737467877577365542010-08-26T11:09:00.000-07:002010-08-26T11:15:20.559-07:00Acid skullThere's this really cute skull splat I keep seeing everywhere; I think it's some clothing company icon or whatever.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp6eEja1fSVdkwCZ7_RArppdCiWhs2pqycTch8ZmU11FKUlPx5E_eIiW3mpDEGQE_DsCPKi37ThRFs7Qd8mc0QDaXud8dffoVAQ2LMB5fmuMdPOZ7kO80Nt2jxqn0m-9VfgdRTOd7cI70/s1600/acidskull.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 389px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp6eEja1fSVdkwCZ7_RArppdCiWhs2pqycTch8ZmU11FKUlPx5E_eIiW3mpDEGQE_DsCPKi37ThRFs7Qd8mc0QDaXud8dffoVAQ2LMB5fmuMdPOZ7kO80Nt2jxqn0m-9VfgdRTOd7cI70/s400/acidskull.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5509783591042792002" /></a><br /><br />Anyway here is my imitation! I got ArtRage with my tablet which is actually pretty cool, it complements the GIMP nicely. It has different brush textures and when you use the paintbrush, the default option is for it to mix with the paint already present. I imagine for Real Artists Who Can Paint it's super good, for me it's still fun! You can turn anything into a stencil so I have this skull as a stencil now, that's how I made the dropshadow. All the green was added in the GIMP.Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-50083328290016213372010-08-25T23:05:00.000-07:002010-08-25T23:38:38.843-07:00Tinky WeatherwhistleAppearance: Your average double-pink-bunched gnome. She has a fondness for check print and leather.<br /><br />Power: Humming her discordant yet beautiful songs makes mechanicals fall into line and the laws of physics bend to fit her can-do attitude to engineering.<br /><br />Quote: "I need more MATERIALS!" "Make way for PROGRESS!"<br /><br />Combat: She spends most of combat in the bubble of her Macrognomic Shell. This is usually humanoid, but no bets on what sneaky payloads the limbs might be carrying! The acoustics give Tinky a peculiarly deep voice.<br /><br />Travel: It takes a while to put together, but with a rucksack full of material Tinky can transform the Macrognomic Shell into the Inevitable Sphere of Destruction. It looks a bit like a sea urchin and uses steam power to propel the spines. Acceleration and handling aren't all that, but the top speed isn't bad! So far it has killed one hedgehog.<br /><br />Engineering: accomplished with the aid of five little autognomatons. Occasionally they wander off but usually they're safely packaged in Tinky's rucksack or compartments in the back of the Macrognomic Shell.<br /><br />Balance: Tinky's inventions are extremely flexible, but they do take a while to put together and occasionally some special components or additional power sources may have to be improvised.<br /><br />Secret, the first: Tinky has a real, real tiny, Sphere of Annihilation. The vacuum it generates powers the extremely gradual collapse of a many-layered metal sphere, which in turn powers many of Tinky's inventions. Every few months she returns to HQ and plugs it in to recharge. It has never escaped.<br /><br />Secret, the second: Tinky has an evil twin called Tonks. Tonks has a fondness for stripes and impractical vagaries of silk.<br /><br />Secret, the third: Tinky is deathly afraid of air travel. She does not know this yet.<br /><br />Credit: Yes, this is principally a ripoff of Girl Genius, but with a drop of WoW. The Inevitable Sphere was all me, and the Macrognomic Shell is more of a species in GG than a suit. The D+D Arabian Nights had a clockwork wizard, Tinky is adapted for a more action-oriented, narrativist game.<br /><br />Why, oh god why? So I can illustrate it! She should be fun to draw.Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-18959369198060074542010-08-20T19:06:00.000-07:002010-08-20T19:35:06.535-07:00Random blarghing, now with pictures!<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM6PtBgk6mWMFnphAZ4UuRFHwhtWx-ZgLADGMlz3hSIFTkXH7CJYU7TMKiF1DTyLvTlKZUriwduoaSGPl1yy1K3ay1xlTnTEAEhX740vWkgaA3zc-IFfZf1PyxRSq1sI2QxY0C7VEuIRM/s1600/cloudstattoo.1.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 333px; height: 285px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM6PtBgk6mWMFnphAZ4UuRFHwhtWx-ZgLADGMlz3hSIFTkXH7CJYU7TMKiF1DTyLvTlKZUriwduoaSGPl1yy1K3ay1xlTnTEAEhX740vWkgaA3zc-IFfZf1PyxRSq1sI2QxY0C7VEuIRM/s400/cloudstattoo.1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5507681898794941234" /></a><br /><br /><a href='http://hyperboleandahalf.blogspot.com'>HB+0.5</a> has made me want to post random shit again.<br /><br />Today I reread all my mortgage documentation (mature and responsible) then spent half the night on that blog (irrational funclinging). On the plus side I don't feel guilty or like I've let myself down, just rather puzzled over wtf I'm trying to accomplish. I have faith in me. Me has a great plan, I'm sure and any time me would like to let me in on it that'd be cool.<br /><br />I spent most of yesterday night reading incredibly positive life-affirming blog posts from positive life-coachy people. The old barf reflex has not entirely subsided but I figure maybe I can drown it with sunshine. The Cartoonival of Wisdom is well worth Googling. Amy Hoy's <a href='http://slash7.com/'>Slash7</a> got me onto the whole thing, I enjoyed <a href='http://copylicious.com'>copylicious</a> as well as some others.<br /><br />My drawing tablet is languishing. I feel guilt towards my drawing tablet. Dilbert, XKCD and HB+0.5 have clearly proven bad art is funnier than good art and way funnier than no art. Therefore I am potentially fully equipped to enter the world of illustrated blogging. I'm not 100% where unrecognisable art comes in. I did rip off some image I found on Google to make a weather sign which I was idly musing about tattooing on my chest. The idea is "sometimes there are clouds but the sun is always there", which is stilton but might genuinely help me stay this side of murderous.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijdy4SViPoJP7I6HQWcGOhUZ5kVlgxZ00g3i9-cuCR7-FjB3p1ob8XZMCQwVXiT7IweiLdCSLLh29o61tkBdQDIJr6YL-CFl4c2QILfBLpUejdDMZ8jhYQ42mahBSkz8eT6eiwfjvUWRg/s1600/seismovoracity.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijdy4SViPoJP7I6HQWcGOhUZ5kVlgxZ00g3i9-cuCR7-FjB3p1ob8XZMCQwVXiT7IweiLdCSLLh29o61tkBdQDIJr6YL-CFl4c2QILfBLpUejdDMZ8jhYQ42mahBSkz8eT6eiwfjvUWRg/s400/seismovoracity.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5507685329583969634" /></a><br />On that note, I've really been diving into Buddhism again and I hope it isn't just a freakish little phoenix effect thing. So much shit has happened in the last few years I've kind of given up any expectations of the future. On the other hand I'm still working, that's getting easier and I'm buying a freaking house. I have no idea how long I'll be able to maintain any of this but maybe it's okay. No matter how bad it seems I'm unlikely to suffer spontaneous organ failure or seismovoracity. I may not be Stephen Hawking but people much dumberer get along just fine.Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-76164865024576074572010-08-15T13:16:00.000-07:002010-08-15T14:48:08.077-07:00Clinging to the skandhasI have written this as an exam for myself. I had thought of the skandhas as a mental model and not applied them to ethics, ie the study of saving oneself (autosoteriology?!). Learning that attachment to them causes suffering, I set out to explore how. My answers are not necessarily as useful as they could be.<br /><br />The <a href='http://en.wikipedia.org/wiki/Skandha'>five skandhas</a> are (my choice of terms):<br /><ul><li>Substance, what is</li><br /><li>Sensation, attraction or repulsion</li><br /><li>Conception, the modelling as objects</li><br /><li>Mental formation, our habits of thought</li><br /><li>Consciousness, that which observes</li><br /></ul>Substance in the presence of Consciousness leads to Sensation, Conception and Mental Formation. They cause us suffering in correlation to our attachment to them, that is our participation in them. We can be free of this suffering by:<br /><ul><li>Recognising the impermanent, relative and composed nature of all substance (for Substance and Conception).</li><br /><li>Recognising there is no inherent good or evil, appeal or repulsion, and appreciating all things for their roles.</li><br /><li>Freeing ourselves from our preconceptions and seeing each moment anew.</li><br /><li>Observing the full contingency of our consciousness on our experience.</li><br /></ul>Mostly this feels like a reflection on the three marks of existence as applied to our own minds. We free ourselves from attachment to the skandhas by fully internalising our appreciation of the marks, so that as the skandhas arise we appreciate them and let them go.<br /><br />The last one is tricky for me. Consciousness-as-observer is impermanent (we sleep and die) but it feels unchanging. My best formulation of the emptiness of consciousness is that it is contingent on the other skandhas, it is an illusion conjured by their illusory existence. There is no observer, the sensation conception and formations simply arise. When they do not, when we are asleep, the observer appears to disappear - it was never there.Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-47360484750974502432010-08-14T11:08:00.000-07:002010-08-14T11:50:57.276-07:00Couple of things for MikeDouble brace initializers:<br />http://stackoverflow.com/questions/924285/efficiency-of-java-double-brace-initialization<br /><br />The JSON technique is really simple... use a handrolled or library JSONBuilder on the server to spit JSON onto the client, include some JS which on DOM-load replaces some div's innerhtml with HTML rendered from the JSON. Hang observers off it (remembering not to actually observe until you've set the innerhtml, so the tags exist) and regenerate the whole shaboodle any time the data changes. Never manipulate the generated HTML.<br /><br />It's great for complex widgets (a smart table) and equally good for making simple widgets smart. For example, restricting the options available in a select according to a mapping from some other select's current value.Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-51773873353426718412010-06-16T06:15:00.001-07:002010-06-16T06:15:36.968-07:00.wu.js<br /><br />What would Java be like without null?Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-31772665573153981242010-06-05T03:03:00.000-07:002010-07-12T04:56:09.125-07:00Healing for DummiesFollowing on from DPS for Dummies, and Healatica Principia (what an amazingly pretentious title XD). I have healed in Wrath with all of these specs, but not all in progress raids. Like the DPS guide, this will obviously not make you a star, just get you started. The value here is having every style listed in a very condensed format.<br /><br />Comment very welcome.<br /><br /><br />Druid:<br />Always: be casting, prehot if you're bored.<br />AOE: RJx5/WG, tranquility for decimates<br />Spot: RG/swiftmend. I like LB for minor spot healing, it's sick efficient and can be boosted if the incoming DPS rises.<br />Tank: Full hots + nourish spam. You can afford to roll at least 1 stack of LB and are hurting your HPS badly if you don't. Fast stack if you have mana issues; slow stack on secondary tanks.<br />Mana: use innervate early and you should have very few problems.<br />Macro: yell to Rebirth, NS+HT<br />Gear: cap haste then stack SP. Spirit is ok, mp5 is terribad.<br /><br />Disco priest:<br />Always: Bubbles are always your priority. Keep PoM up but try not to hide it under a full shield. Melee usually make the best targets; use SW:D if it jumps to you. Use Pain Suppression and Power Infusion liberally.<br />AOE: If everyone's shielded and big damage is incoming, consider Renew. Not a strength.<br />Spot: Flash heal. Never use GH. Binding heal if you're damaged.<br />Tank: Maintain renew, penance to top up, binding if you're damaged, flash when you have to.<br />Mana: shadowfiend, try the Rapture trick if you're too leet for this guide.<br /><br />Holy priest: Skipping for now because I haven't played Holy since BC.<br /><br />Holydin: HL build is recommended.<br />Always: Maintain beacon, JotJ and SS, usually both on MT. Use your auras and hands.<br />AOE: Haha. Glyph HL and spam. Raid-bubblewall before big bangs.<br />Spot: Holy Shock, FoL. Hands.<br />Tank: FoL, HL when needed (ie most of the time, in raid).<br />Mana: Time Plea with lulls, but USE it. Other healers will cover you. Stacking with wings loses overall HPS, but this isn't a big problem. Pop DI when you know you'll be spamming HL.<br />Macro: DS /cancelaura, DF+HS (FoL after)<br /><br />Shaman:<br />Always: Think out your totems. Usually you want SoE, Flametongue, WoA + Healing Spring. Use Stoneskin if you have a DK; skip FT if you have an elem sham; use windfury if WoA is covered and you don't have a frost DK; use Mana Spring if you lack BoW. Tremor and Cleansing can be situationally OP.<br />Always: Maintain water shield and healing waves for yourself, earth shield on the tank.<br />AOE: Brain heal FTW. <br />Spot: CH, Riptide, LHW. Rip leaves HOTs about to CH.<br />Tank: Riptide, LHW spam, HW if you really have to.<br />Mana: Mana Tide is a bit lame but does affect your group. Shaman are hard to run OOM, but if you get close use more LHW and less HW.<br />Macro: NS+TF+HW, NS+CH<br /><br /><br />I really like macros like this:<pre>#showtooltip<br />/cast [@mouseover] earth shield; earth shield</pre>It will cast on your mouseover target if it can, or your target if you have one, or yourself (assuming you have auto selfcast on).Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-32033941428494466792010-06-05T02:51:00.001-07:002010-06-10T06:13:44.083-07:00SapientMudMoved this to Google WaveAnonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-77133274787669727802010-06-05T02:45:00.001-07:002010-06-05T02:47:15.609-07:00.vimrcJeez when did this blog actually get content? Huh.<br /><br />To balance out all that unwarranted productivity, have my .vimrc file. I'll update shortly with the ninja menu-creating skillz I learnt at work.<br /><pre>set guifont=Courier_New:h12<br />set title<br />set nobackup<br />set writebackup<br />set nohls<br />set visualbell<br />set ruler<br />set incsearch<br />set smartcase<br />set smarttab<br />set scrolloff=10<br />"set sidescrolloff=10<br />"set nowrap<br />set tw=80<br />set wm=0<br />set linebreak<br />set tabstop=2<br />set shiftwidth=2<br />set expandtab<br />set backspace=2<br />set noai<br />set nojoinspaces<br />set cpoptions-=a<br />set cinoptions=g0.5s,h0.5s,:0.5s,=0.5s,p0,(0.5s,+0.5s<br />set winminheight=0<br />"V6 set winminwidth=0<br />set matchtime=2<br />" eol:$,<br />set nolist<br />set lcs=tab:>-,trail:\<br />hi NonText ctermfg=4<br />hi SpecialKey ctermfg=4<br />syn on<br />filetype indent on<br />" winpos 0 0<br />" set lines=52 columns=80<br />set tags=~/.tags<br /><br />if hostname() != ''<br /> let &titleold = matchstr(system('whoami'), '\w\+') .'@'. hostname()<br />endif<br /><br />" Darn F keys...<br />map OP <F1><br />map OQ <F2><br />map OR <F3><br />map OS <F4><br />map [11~ <F1><br />map [12~ <F2><br />map [13~ <F3><br />map [14~ <F4><br />map [15~ <F5><br />map [17~ <F6><br />map [18~ <F7><br />map [19~ <F8><br />map [20~ <F9><br />map [21~ <F10><br />map [23~ <F11><br />map [24~ <F12><br /><br />" Printing<br />set popt=header:3,syntax:a,number:n<br />set printexpr=PrintFile(v:fname_in)<br />function! PrintFile(fname)<br /> let pd = (&printdevice == '' ? '' : ' -d'. &printdevice)<br /> call system('lp '. pd .' '. a:fname)<br /> " echo 'lp '. pd .' '. a:fname<br /> call delete(a:fname)<br /> return v:shell_error<br />endfunc<br /><br /><br />" New ex commands<br />comclear<br />command -range=% CppCmt <line1>,<line2>s/\/\*\([^\/]*\)\*\//\/\/\1/g<br />command -range=% CCmt <line1>,<line2>s/\/\/\(.*\)$/\/\*\1 *\//g<br />command -range=% TidyEOL silent! <line1>,<line2>s/\s\+$//g<br />" TidySrc is broken<br />command -range=% TidySrc silent <line1>,<line2>TidyEOL | <line1>,<line2>s/{\n\n\+/{ <br />/ | <line1>,<line2>s/\n\n\+\(\s\+\)}/ <br />\1}/ | <line1>,<line2>s/\n\n\n\+/ <br /> <br /> <br />/ | normal "gg=G"<br />" :silent! TidyEOL<br />:silent! %s/{\n\n\+/{ <br />/<br />:silent! %s/\n\n\+\(\s\+\)}/ <br />\1}/<br />:silent! %s/\n\n\n\+/ <br /> <br /> <br />/<br />gg=G<br />command -nargs=1 -complete=help Help :h <args> | normal _<br />command -range=% MkLocalScript silent! <line1>,<line2>s/set/setlocal/ | silent! <line1>,<line2>s/map/map <buffer>/ | silent! <line1>,<line2>s/ab/ab <buffer>/<br /><br /><br /><br />" Maps<br />map '1 gg<br />map # .n<br />" Comment a visual block<br />vmap # :s/^\(\s*\)\(.\)/\1# \2/<CR>:silent! '<,'>s/^\(\s*\)# #\s*/\1/<CR><br />map '' :update<CR><br />"map 'q :!rm -f .*.^^<CR>:q<CR><br />map 'q :q<CR><br />map 'Q :q!<CR><br />map 'w '''q<br />map 'e :files<CR>:e <br />map 'E '''e<br />map '# :e #<CR><br />map '~ '''#<br />map 'v :e ~/.vimrc<CR><br />map '. :e %:p:h<cr><br />map <F8> :update<CR>:prev<CR><br />map <F9> :update<CR>:next<CR><br />map 'r :e!%<CR><br />map 'd :!rm %<CR>:set nomodified<CR><br />" Updates a line like /# Last:/<br />map 'l 0f:"_C: :read !date +'\%Y.\%m.\%d \%T'<CR>kJ''<br />map L 10k<br />map M 10j<br />map S g$F r<CR><br />map w _<br />map <TAB> zi<br />map Z @q<br />map ] >><br />map [ <<<br />nmap <C-u> 1000000u<br />map <F10> :!irb<cr><br /><br /><br />" New stuff<br />set fillchars=vert:\|,fold:\<br />set foldminlines=3<br />" set foldclose=all<br />"V6 set foldlevelstart=2<br />"V6 set foldmethod=indent<br />set viewoptions=folds,cursor<br /><br />" F11: EditFtplugin(), F12: EchoFtPlugin<br />let vimdir = expand("~/.vim")<br />let ftdir = vimdir .'/ftplugin'<br />let skeldir = vimdir .'/skel'<br />function! EchoFtplugin()<br /> if exists("b:file")<br /> echo b:file ." sourced"<br /> else | echo "No *.vim sourced"<br />end<br />endf<br />function! EditFtplugin()<br /> if exists("b:file")<br /> exec "edit ". b:file<br /> elseif &ft != ''<br /> let fn = g:ftdir .'/'. &ft<br /> if isdirectory(fn)<br /> exec "edit ". fn<br /> else | exec "edit ". fn .".vim"<br /> end<br /> else | echo 'No filetype or b:file'<br /> end<br />endf<br />map <F11> :call EditFtplugin()<cr><br />map <F12> :call EchoFtplugin()<cr><br /><br />function! ReadSkel()<br /> let full = fnamemodify(expand("%"), ":p")<br /> let tail = fnamemodify(full, ":t")<br /> let extn = fnamemodify(full, ":e")<br /> let fn = g:skeldir ."/". tail<br /> if filereadable(fn) | call ReadSkel_(fn) | return | end<br /> let fn = g:skeldir ."/". extn<br /> if filereadable(fn) | call ReadSkel_(fn) | return | end<br /> let fn = g:skeldir ."/". &ft<br /> if filereadable(fn) | call ReadSkel_(fn) | return | end<br />endf<br />function! ReadSkel_(fn)<br /> exec "0read ". a:fn<br /> silent! g/reated/normal 'l<br />endf<br /><br /><br />hi Comment ctermfg=6<br />hi Directory ctermfg=6<br />hi Folded term=standout ctermfg=7 ctermbg=0<br />ab LAL Alexis Lee <lxs@lxsli.co.uk><br /><br />let @q = "I:silent! %s/ A\\n// 0\"wdd@w"<br /><br />" usually unnecessary<br />filetype plugin on<br />augroup vimrc<br /> au!<br /><br /> " Match any filename with at least one character<br /> " Careful if /root/.vim -> /home/*/.vim, mkdir /root/.vim/view<br /> au BufWinLeave ?* if &ft != 'mail' | mkview | end<br /> au BufWinEnter ?* silent loadview<br /><br /> au BufEnter *.rbd setf ruby<br /><br /> au BufNewFile,BufEnter ~/winmvs*/* exec "so ".vimdir."/mvs.vim"<br /> au BufNewFile ~/winmvs*/* call MvsGet()<br /> au BufNewFile,BufEnter *.jcl setf jcl | exec "so ".ftdir."/jcl.vim"<br /><br /> " Do this properly sometime - test filename in cpp.vim<br /> au BufEnter *.h exec "so ".ftdir."/h.vim"<br /> au FileType xml setlocal ts=2 sw=2<br /> au FileType help setlocal ts=2 sw=2<br /> au FileType make setlocal ts=4 sw=4 list<br /> au BufEnter sql/data/* setlocal ts=8 sw=8 list<br /> " au VimEnter * au BufEnter * syn sync fromstart<br /><br /> au BufNewFile * call ReadSkel()<br /> " au BufNewFile main.c call ReadSkel()<br /><br /> "au BufWritePost,FileWritePost *.pl normal :!chmod +x %<CR><br /> "au VimLeave *.pl normal :!chmod -R ugo+rx ~/perl/*.pl<CR><br />augroup end<br /></pre>Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-21471166651580273752010-06-04T02:32:00.000-07:002010-06-04T02:45:53.734-07:00The trials of minification<a href='http://dailyjs.com/2010/01/27/pro-practices-1/'>Amy Hoy</a> got me thinking about JS minification and my manager OK'd me to look into it.<br /><br />Day 1 went very well. I got Sprockets and the YUICompressor working on the command line with a batch file. To integrate this into our Maven process, I wrote a little Maven plugin/mojo I called packJS. Mojos are written in Java so I switched from Sprockets to <a href='http://www.nczonline.net/blog/2009/09/22/introducing-combiner-a-javascriptcss-concatenation-tool/'>Combiner</a>. I installed the two jars into my local repository and everything was hunky dory.<br /><br />Day 2 slid downhill somewhat. It seems the deploy:deploy-file goal doesn't work very well, so I was unable to push the dependencies to our central repository easily.<br /><br />Day 3 brings new hope, and with it new forehead-rubbing. There's a yuicompressor maven plugin already. Unfortunately it doesn't seem to work either, in aggregation mode at least. It complains the output file does not exist; creating the parent dirs manually may help, but clean will erase them again.<br /><br />Updates ongoing.<br /><br /><br />ps. Which is it, Maven? A plugin or a mojo?Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-74434353699921116872010-06-03T03:28:00.000-07:002010-06-03T08:12:29.352-07:00Link dumpSome of the crazy CSS stuff I've been reading up on.<br /><br />http://www.alistapart.com/articles/sprites<br />http://www.alistapart.com/articles/fluidgrids/<br />http://unstoppablerobotninja.com/entry/fluid-images<br />http://www.clagnut.com/blog/348/ - 62.5% rule<br />http://stopdesign.com/archive/2003/03/07/replace-text.html - Fahrner Image Replacement (FIR)<br /><br />http://www.alistapart.com/articles/responsive-web-design/ - media queries, not just for mobile<br /><pre>@media screen and (max-width: 600px) {<br /> .footer {<br /> -- standard css rules --<br /> }<br />}</pre>Bear in mind this is CSS3 and therefore <a href='http://www.quirksmode.org/css/mediaqueries.html'>not supported by IE</a>. They do seem to be well supported in FF3.6, contrary to quirksmode.<br /><br /><br />Amy Hoy knows how to hustle: http://slash7.com/2009/12/02/my-year-of-hustle-the-freckle-aversary/<br />Thomas Fuchs (her husband) helps write Prototype and Script.aculo.us (v1+2): http://mir.aculo.us/<br /><br />Prototype 1.7 has a sexy new Element#on. I will be metaphorically feeling up #getLayout as well.<br />http://prototypejs.org/2010/4/5/prototype-1-7-rc1-sizzle-layout-dimensions-api-event-delegation-and-moreAnonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0tag:blogger.com,1999:blog-5265000393516581302.post-32614874845857813012010-05-17T01:56:00.000-07:002010-05-17T01:58:22.774-07:00Do we write anything except compilers?Seems like everything can be expressed as a DSL.Anonymoushttp://www.blogger.com/profile/06656717702605575713noreply@blogger.com0