Photo credit: cheers Hembo Pagi
This is a quick post (and will probably be outdated quickly), but it took me a while to get it correct.
I wanted to install Jupyter on Windows. The recommeded route is via Anaconda but I like to use Chocolatey the Windows package manager as much as possible.
choco install python -y
This installs python to
C:\ProgramData\chocolatey\lib\python3\tools. It also installs
As long as you have
C:\ProgramData\chocolatey\bin in your
PATH then you should be able to run
Install PIP (hint: it’s already installed)
Note that pip gets automatically installed when you install python – nothing extra is required.
You can get led astray here by an official guide which suggests having to download and run
Don’t do this.
There is also confusingly a Chocolatey PIP package. Again don’t install this.
Otherwise you might end up here.
Running PIP packages
Because we’re using Chocolatey, the installation doesn’t follow the recommended installation for Jupyter.
The main thing is that you need to add the python
Scripts directory to your
PATH. Add this:
Run as administrator:
pip install jupyter
This will install a
jupyter.exe file into the
Scripts directory. If that directory is in your
PATH, then you should be able to directly run
Create a Jupyter notebook
Jupyter runs inside the browser but installs files and all the save data in the directory that you run the
jupyter command from.
mkdir jupyter cd jupyter jupyter notepad
If everything is working that will open up your browser at http://localhost:8888/.
I give you http://pom.ianchanning.com. Pomodoros with a Lock Stock film quote at the end of each one.
I’m a little obsessive about timers (see bottom) and the other pomodoro timers I’ve tried failed on different counts.
I’ve tried to cram everything I find useful about a timer.
Firstly spacebar to start/stop. The timer should be something that sits in the background and requires minimal attention. So a quick ctrl+tab to get the the pomodoro tab and then hit space and then back to your work.
Secondly the timer appears in the title bar and it appears first. Then you can easily see that it’s running so that you can still see the timer when you have lots of tabs open.
Thirdly there’s a start and stop. Possibly this flies against what a Pomodoro timer should do. However any timer I have I want to be able to start/stop/reset. That’s just what a timer should do, it’s annoying if it doesn’t.
Fifthly a count of the pomodoros is useful to know how many you cranked out in the day.
Sixthly, a bit of browser responsiveness goes a long way.
And that’s it. No more please.
Well except I needed to put something in the notification so I jazzed things up with quotes from Lock Stock and Two Smoking Barrels. If you can’t take the ‘c’ word at least once then this timer is not for you.
For those who got this far. I started with the most basic timer I could think of that still had a simple start-stop mechanism. Then after staring at the jquery code I’d copied I realised I could make a generic jquery ticker function. So I can tick 25 minutes down and then tick the pomodoro count up 1 each time. The rest is a codged together front end on top of that.
[Photo credit: darkmatter]
I’ve been reading into Scrum closer recently and it just seems like a horrible corruption of an inspirational idea, that could much more easily be integrated into normal project practices.
I love the agile principles. I’m repeating them here for my own benefit, I like a good list as much as the next.
- Customer satisfaction by rapid delivery of useful software
- Welcome changing requirements, even late in development
- Working software is delivered frequently (weeks rather than months)
- Working software is the principal measure of progress
- Sustainable development, able to maintain a constant pace
- Close, daily cooperation between business people and developers
- Face-to-face conversation is the best form of communication (co-location)
- Projects are built around motivated individuals, who should be trusted
- Continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work not done—is essential
- Self-organizing teams
- Regular adaptation to changing circumstances
Each principle makes sense, even if, perhaps, it isn’t attainable.
Their manifesto is harder to figure out, but still has a great aspirational feel to it.
|We value this||Over this|
|Individuals and interactions||Processes and tools|
|Working software||Comprehensive documentation|
|Customer collaboration||Contract negotiation|
|Responding to change||Following a plan|
However importantly note that the second column is still valued, but just not as much as the first.
I realised I’d already got it wrong with what a sprint was – I thought it was two weeks work. They suggest that it should be a month’s worth of work – which makes sense, but why not just call it a month’s worth of work – or if it’s going to be less just call it an increment.
Anyway I read through the Scrum Guide and here’s my unsucked version of their main concepts.
|Scrum Guide™||Unsucked agile guidelines™|
|The Scrum Team||The Team|
|The Product Owner||The Client|
|The Development Team||The Developers|
|The Scrum Master||The Project Manager|
|The Sprint||The Sprint (it isn’t actually that bad a word) / Increment|
|Sprint Review||Sprint Update|
|Sprint Retrospective||Sprint Review|
|Sprint Backlog||Sprint Issues|
|Definition of “Done”||Happy Client|
Can I have a word…
“Shall we go over the Sprint Review later? I’m not convinced that the Product Backlog contains all that we require for the definition of done. The Daily Scrum this morning wasn’t great as the Scrum Master had to get the Development Team to better explain their progress to The Product Owner. We need to make the Sprint Backlog artifact more transparent as The Product Owner feels we haven’t followed what we agreed at the last Sprint Retrospective.”
“Shall we go over the Sprint update later? I’m not convinced that the issues contain all that we require for the client to be happy. The talk this morning wasn’t great as the Project Manager had to get the developers to better explain their progress to the business. We need to simplify the Sprint’s issues as the client feels we haven’t followed what we agreed at the last Sprint review.”
Please let the first type of conversation cease.
New Relic offers completely free server monitoring (CPU, RAM, Network I/O etc) and limited (24 hour retention) PHP application performance monitoring (detailed error logs, PHP vs MySQL load times etc). Its far better than monitoring tools I’ve seen and very useful for trying to figure out any problems with WordPress which can be quite heavy in different areas CPU vs RAM vs Database.
New Relic have excellent docs on the server installation, but this is a summary of the commands, N.B. the
YOUR_LICENCE_KEY needs to be changed:
sudo sh -c 'echo deb http://apt.newrelic.com/debian/ newrelic non-free > /etc/apt/sources.list.d/newrelic.list' wget -O- https://download.newrelic.com/548C16BF.gpg | sudo apt-key add - sudo apt-get update sudo apt-get install newrelic-sysmond nrsysmond-config --set license_key=YOUR_LICENCE_KEY /etc/init.d/newrelic-sysmond start
There’s again useful New Relic installation notes:
sudo sh -c 'echo deb http://apt.newrelic.com/debian/ newrelic non-free > /etc/apt/sources.list.d/newrelic.list' wget -O- https://download.newrelic.com/548C16BF.gpg | sudo apt-key add - sudo apt-get update
This is all repeated from the Server section, so the only actual line required is:
sudo apt-get install newrelic-php5
This asks you to give an Application Name – the best format to use is
[vhost domain];[server domain] where the server domain is used as a kind of parent filter for all vhost domains.
PHP vhosts applications
This doesn’t quite work for Plesk installations as we want a per-directory application performance indicator. This assumes that we’re using the Apache php mod rather than FastCGI as we’re putting PHP ini settings in apache config files.
This guide (http://blogs.reliablepenguin.com/2015/02/11/plesk-new-relic) was the perfect starting point. The application names they suggest are really useful e.g.
[vhost domain];[server domain]
Changing the application name
If you make a mistake with the application name you can change it. Just follow this document (https://docs.newrelic.com/docs/apm/new-relic-apm/maintenance/renaming-applications).
Apache Virtual Hosts
I have a manual setup on a dev server – so I needed to modify the
/etc/php5/conf.d/newrelic.ini file to comment out the appname.
I could then add the variables into the
/etc/apache2/sites-available/* apache config files with
php_value newrelic.appname "vhost.example.com;server.example.com"
WordPress W3 Total Cache
W3 Total Cache offers a basic integration with New Relic through its API.
There’s a couple of links for this:
W3 Total Cache assumes that you’ve setup the PHP application. What is non-obvious is that you need an API key and not your licence key. Via a WordPress SE answer, you can then enable API access (Select (account name) > Account settings > Integrations > Data sharing > API access) and use the generated API key in WordPress Admin > W3 Total Cache > General Settings > Monitoring section (wp-admin/admin.php?page=w3tc_general#monitoring).
In response to a blog post ‘Why I keep fixing my bike‘ about the risks of buying a dodgy second hand bike, I wrote the following comment. It’s something I’m quite passionate about so worth storing on my own blog…
I have bought at least 7 bikes second hand through either ebay or gumtree all without problem. Every bike has been exactly what I was looking for. I wouldn’t buy off an ebay seller with only a small repuatation – and almost all sellers I have seen when searching ebay have 100+ reputation.
I think the chances of getting a lemon are quite small, but you always have to be careful.
With a bicycle you are predominantly paying for a decent frame as the rest can be replaced. Its fairly unlikely that the frame will have been damaged. So buy bikes that have well made frames e.g. Cannondale. I’ve purchased a Specialized, Cannondale, Merkx, Orange, Klein and Marin bikes. Most of the bikes I bought would have had a new value in excess of $1000. I’d be most wary of buying a Specialized bike as they are the most common and the current Specialized bikes I’ve seen have very poor welding on the frames.
Certainly don’t go buying cheap branded bikes new bikes e.g. and shop’s own brand. If you’ve got very little money you can pick up old retro racing bikes for less than $100.
Limit your search to only bikes that are near buy (i.e. 30 minute drive) so that you don’t waste much time.
There are many things you can look for:
- Has the bike been stored inside – if you see a photo of it hanging up in a garage on its own rack its a pretty good bet that it has
- Buy ‘fixed’ bikes without suspension as the suspension can be expensive to replace
- Look at the type of gears that it has
- Check how detailed the spec of the bike is – does the person list exactly all the components – this gives an indication of how much the person cares about the bike
- Do they state where they bought it from
- Do they display high quality images of close ups of the gears, the joins of the frame where cracks appear
- What have they been using the bike for
- How often do they clean the bike
- Ask what year the bike is from as well as the exact make and model – then hopefully you can find a reference to how much the bike was when it was new.
- Check the welding on the bike frame – how clean are the welds. You shouldn’t be able to see the welds – as that means it was a cheaply made bike by machines and never finished off.