profile
viewpoint
Andrew Blakey ablakey @locusrobotics Kitchener, Ontario Roboticist / Geographer

ablakey/periodic 31

The Periodic Table of Github

ablakey/Leaflet.SimpleGraticule 29

A graticule for Leaflet maps in the L.CRS.Simple coordinate system

ablakey/chip8 5

A Chip8 Emulator in Rust

ablakey/awesome-robotic-tooling 0

Just a bunch of powerful robotic resources and tools for professional robotic development with ROS in C++ and Python.

ablakey/bevy-website 0

The source files for the official Bevy website

ablakey/catkin_virtualenv 0

Bundle python requirements in a catkin package via virtualenv

ablakey/django-uwsgi-nginx 0

Dockerfile and configuration files to build a working Django container with uwsgi and nginx

push eventablakey/intelcom-perf

Andrew Blakey

commit sha df8df966e851f5e607abfc55a24765766be4b025

Update README.md

view details

push time in 8 days

push eventablakey/pointless.click

Andrew Blakey

commit sha 18360cac2e254c9472f00d7ba15443d10d640c0c

update

view details

push time in 8 days

push eventablakey/pointless.click

Andrew Blakey

commit sha 2f2dfd23995665413c70e0118724fb3c0c1543b1

intelcom

view details

push time in 8 days

create barnchablakey/pointless.click

branch : intelcom-project

created branch time in 8 days

push eventablakey/intelcom-perf

Andrew Blakey

commit sha a036acc4d5b8e1b242a12047e51df17eb6a5f6cb

update

view details

push time in 8 days

push eventablakey/intelcom-perf

Andrew Blakey

commit sha cd3af877a765ebb9fcb5c3477b8409bc570def5c

cleanup

view details

push time in 8 days

push eventablakey/intelcom-perf

Andrew Blakey

commit sha dae405085e2659278fcdb73dc5cbb1520864a0cf

Working scripts

view details

push time in 8 days

push eventablakey/intelcom-perf

Andrew Blakey

commit sha 0813c030cd1c5d9643474971c7dfc7d8c240f38e

update readme

view details

push time in 10 days

create barnchablakey/intelcom-perf

branch : master

created branch time in 10 days

created repositoryablakey/intelcom-perf

created time in 10 days

issue commentopenlayers/openlayers

WebGLPointsLayer Performance Issues

Looks like I don't need to make a sandbox just yet. https://openlayers.org/en/latest/examples/icon-sprite-webgl.html has the effect of pinning my GPU utilization to 80% just by panning around non-stop. I can reproduce this on my GTX 1050 and my RX580.

I'm not sure how to profile a WebGL application. I installed the "WebGL Insight" chrome plugin but it doesn't exactly tell me a lot that I understand.

I can also reproduce this in Firefox. Though utilization caps at about 50% and FPS is locked at 30.

VRAM usage for the example linked about is about 400MB for both browsers.

What I haven't been able to try is Windows (all these tests are on two Ubuntu 18.04 machines with proprietary drivers). I will try this soon and report back.

ablakey

comment created time in 14 days

issue commentopenlayers/openlayers

WebGLPointsLayer Performance Issues

Thanks, I'll work on an example at work today.

To confirm, if I update just one feature's geometry, that causes a full rebuild of the layer that the feature is found in?

Will mutations and redraws of other canvas layers cause any impact on the WebGL programs (ie. GPU usage)?

My understanding is that every layer is built and managed uniquely and merged together as rasters with transparency at the end of the render pipeline. This means that highly mutative layers shouldn't affect the mostly static layers?

To give a little context why I ask, I've got about 16 layers, only 4 of which are WebGL:

  • 10 000 navigable robot poses
  • 10 000 reference points related to those poses
  • charging docks
  • queues
  • polygons describing rules/behaviour
  • annotations and measurements
  • real-time robot position data, sensor data, path planning, goals.
  • extra label layers for most of these (given the WebGL layers cannot have labels in WebGL as far as I can tell)

So it's an interesting mix of layers that rarely change (once a week for the WebGL layers) and layers that change many times a second (robot positions via canvas Vector Icons)

ablakey

comment created time in 14 days

issue commentopenlayers/openlayers

WebGLPointsLayer does not update dimensions when browser viewport dimensions change.

Thanks for the response. You're right, it happens on canvas layers too. I missed it because silly me, the layer in question was nice square polygons that scale really well without jagged edges.

I imagine that the act of changing the viewport size (and pixel ratio) is not likely to be a common one. One remedy is to wire into that happening (MutationObserver?) and just destroy and rebuild the Map when necessary. This is probably something the developer, not the library, can worry about.

ablakey

comment created time in 14 days

issue openedopenlayers/openlayers

WebGLPointsLayer context re-scaling

Describe the bug When the canvas (context?) re-sizes (eg. resize browser window) the WebGL layer does not resize. The result is that in some cases the rendered view can be very pixellated, as if a tiny context is being upscaled by a lot.

To Reproduce

  1. Go to https://openlayers.org/en/latest/examples/webgl-points-layer.html
  2. Scale your browser window ZOOM down to like 10% (eg. Ctrl -).
  3. Refresh the page, which renders the canvas context at that zoom level
  4. Zoom back to 100%
  5. Notice the blue circles are very low resolution

Expected behavior Changes in viewport size should cause an update to the WebGL layer's size.

Thoughts I am guessing that the opposite might also be true: when zooming down to 10% you end up with a positively colossal WebGL frame size. I think the above demo is simplistic enough, but when I apply the same workflow to my own, more complex app, Zooming out basically crashes the browser.

created time in 15 days

startedbevyengine/bevy-website

started time in 18 days

PR opened bevyengine/bevy-website

Remove whitespace from getting started command

Not a big deal, but when you double click to copy the command and paste in your terminal, a bit of whitespace comes with it.

+1 -1

0 comment

1 changed file

pr created time in 18 days

push eventablakey/bevy-website

Andrew Blakey

commit sha f47e5c4f42ef766c93ac05ab4493cbef66314d89

Remove whitespace Remove whitespace for command.

view details

push time in 18 days

fork ablakey/bevy-website

The source files for the official Bevy website

https://bevyengine.org

fork in 18 days

PullRequestReviewEvent
PullRequestReviewEvent

pull request commentlocusrobotics/tailor-distro

Provide more data in environment about release identity

Exactly what I was thinking. Perfect, thanks.

paulbovbel

comment created time in 22 days

push eventablakey/pointless.click

Andrew Blakey

commit sha 0bd1bc2fc1f0b1954a77a8e0ee3a0d57a4ed405d

update promises

view details

push time in 23 days

push eventablakey/pointless.click

Andrew Blakey

commit sha 50aa537c4ce268fece94d45c0773bba1ac8cd7de

update

view details

push time in 23 days

push eventablakey/pointless.click

Andrew Blakey

commit sha 90ca6a28cdfe397bad8d4c14edb9aba62c59051e

fix wrong filetype

view details

push time in 23 days

push eventablakey/pointless.click

Andrew Blakey

commit sha 5f944314bb76e122b999642bd310a58574b8efde

update

view details

push time in 23 days

startedcartant/tslint-etc

started time in a month

issue commentopenlayers/openlayers

WebGLPointsLayer setSource does not work

Thanks for the response. I'm going to profile the cost clear + addFeatures and maybe I'll have a case to use work hours to implement setSource.

ablakey

comment created time in a month

issue openedopenlayers/openlayers

WebGLPointsLayer setSource does not work

Describe the bug I update a layer of 10 000 points by creating a new VectorSource because I have historically found it's cheaper than clearing and re-populating the existing source. This does not work with my experimental use of WebGLPointsLayer

To Reproduce I am happy to put a reproducible example together shortly, but I was hoping to get some initial feedback to decide if I even bother. I know that WebGLPointsLayer is quite experimental, so the short answer is, "yeah don't expect that to work yet."

But if the answer is, "that should work" I would be happy to put an example together.

Pretty excited to keep experimenting with WebGLPointsLayer because as my company's use case expands to hundreds of real-time robots per site and thousands upon thousands of geometries, the frame rate obtained through the canvas layers has fallen dramatically.

created time in a month

startedmvdnes/blip_buf-rs

started time in a month

fork ablakey/tetris_disassembly

Disassembly of Tetris (Gameboy)

fork in a month

push eventablakey/sdl_test

Andrew Blakey

commit sha 2ff60ef2909031285ce081cc14acaa36a8b8b9f4

toggle texture

view details

push time in 2 months

create barnchablakey/sdl_test

branch : master

created branch time in 2 months

created repositoryablakey/sdl_test

created time in 2 months

pull request commentgbdev/gb-opcodes

Fix alternate mnemonic

I still think this is an issue but I want stale PRs off my PR list. Thanks!

ablakey

comment created time in 2 months

PR closed gbdev/gb-opcodes

Fix alternate mnemonic

I believe what's there is wrong, given the GameBoy CPU manual and a few other references, including the above opcode table.

+2 -2

1 comment

1 changed file

ablakey

pr closed time in 2 months

issue closedmvdnes/rboy

Question about renderscan implementation

I've been using your emulator as a reference while learning how to write an emulator. Thanks for sharing it!

I had a question about how you implement the GPU's cycle.

In do_cycle https://github.com/mvdnes/rboy/blob/master/src/gpu.rs#L110 it seems like you're emulating the advancement of the GPU's timing fairly accurately. I was expecting to see a mechanism for incrementally drawing graphics into a buffer (later to be output to the host's screen), pixel by pixel. But instead, it seems like you just draw it all at once at the beginning of switching to mode 1, calling self.renderscan() once.

Could you confirm that is indeed what you're doing, and if you had any feedback on it? Was that for performance reasons? Is it because it doesn't affect some, most, or all games? My sense is that some games might want to do clever things depending on what column you're currently drawing to, but that's not possible if you draw it all in one shot and then emulate no-op cycles past that.

Thank you!

closed time in 2 months

ablakey

issue commentmvdnes/rboy

Question about renderscan implementation

Thank you. Makes perfect sense.

ablakey

comment created time in 2 months

issue openedmvdnes/rboy

Question about renderscan implementation

I've been using your emulator as a reference while learning how to write an emulator. Thanks for sharing it!

I had a question about how you implement the GPU's cycle.

In do_cycle https://github.com/mvdnes/rboy/blob/master/src/gpu.rs#L110 it seems like you're emulating the advancement of the GPU's timing fairly accurately. I was expecting to see a mechanism for incrementally drawing graphics into a buffer (later to be output to the host's screen), pixel by pixel. But instead, it seems like you just draw it all at once at the beginning of switching to mode 1, calling self.renderscan() once.

Could you confirm that is indeed what you're doing, and if you had any feedback on it? Was that for performance reasons? Is it because it doesn't affect some, most, or all games? My sense is that some games might want to do clever things depending on what column you're currently drawing to, but that's not possible if you draw it all in one shot and then emulate no-op cycles past that.

Thank you!

created time in 2 months

issue commentmicrosoft/vscode-eslint

Just updated to 2.1.7 but I can't find anything about this release in the repo.

Will be merged in soon.

Appreciate it. I use vscode-eslint constantly and it makes my job easier. Thank you and all the other contributors for the hard work they do.

I was really hoping to see a release tag or PR that I could diff to understand the changes and more easily scrutinize security. It's unfortunate that such a popular extension seems to get updated behind the scenes.

ablakey

comment created time in 2 months

issue openedmicrosoft/vscode-eslint

Just updated to 2.1.7 but I can't find anything about this release in the repo.

Just got a quasi-suspicious "user needs confirmation before executing code in local library" pop-up. So I went to see what the latest version's code is to verify it's legit. I cannot find anything about 2.1.7 in this repo. Can someone point me in the right direction?

image

created time in 2 months

push eventablakey/chip8

Andrew Blakey

commit sha 15ce094a1d9de314862abbe21416a2660ae97625

Update main.rs

view details

push time in 2 months

push eventablakey/chip8

Andrew Blakey

commit sha 4ffeb4dd8bd71b35998b97fad755a4814b99d5e3

Update screen.rs

view details

push time in 2 months

PR opened gbdev/gb-opcodes

Fix alternate mnemonic

I believe what's there is wrong, given the GameBoy CPU manual and a few other references, including the above opcode table.

+2 -2

0 comment

1 changed file

pr created time in 2 months

push eventablakey/gb-opcodes

Andrew Blakey

commit sha f05f741cb6db56d9da62eb0c8fb05bbb7d777a3d

Update description.html

view details

push time in 2 months

push eventablakey/gb-opcodes

Andrew Blakey

commit sha 108be436228a0c05aa30ae911cc73bed3d8014d4

Update description.html

view details

push time in 2 months

Pull request review commentlocusrobotics/wireless

RST-3447 Fix crashing when wifi loses AP association

 def main():                 previous_error = False                 rospy.loginfo("Retrieved status of interface %s. Now updating at %f Hz." % (dev, hz)) -        except subprocess.CalledProcessError:+        except:

Cool. In Python tradition there's like 5 linters and countless settings for them. Mine complains but I imagine the one we run in CI doesn't.

No big deal either way, I'm not saying you must change this. Just wanted to share the segment of knowledge.

ayrton04

comment created time in 2 months

Pull request review commentlocusrobotics/wireless

RST-3447 Fix crashing when wifi loses AP association

 def main():                 previous_error = False                 rospy.loginfo("Retrieved status of interface %s. Now updating at %f Hz." % (dev, hz)) -        except subprocess.CalledProcessError:+        except:

Apparently I'm subscribed to this and so I got emails about this PR even though I'm not on it. Got curious and took a look and want to share some unrequested feedback.

Typically naked except: is not what you want, to the extent that it's usually a linting error. If you do want to capture everything, use except Exception:. It's actually different because Exception doesn't include some exceptions like KeyboardInterrupt and SystemExit. You can see a really nice hierarchy here: https://docs.python.org/3/library/exceptions.html#exception-hierarchy

And if the answer is. "Yuuup I knew that and want to capture those exceptions too" well then homer_receeding _into_the_bushes.gif

ayrton04

comment created time in 2 months

pull request commentvadimcn/vscode-lldb

Update value.py for python3 support

Given it's an unbounded collection that could be very large (if someone's trying to expand a massive array of elements in their debugger), this is one of those times where the lazy generator behaviour of xrange might actually matter. But I definitely defer to your judgment on the matter.

ablakey

comment created time in 3 months

issue commentjmrivas86/django-json-widget

ReferenceError: Can't find variable: JSONEditor

All I had to do was a collectstatic given I'm using storages to put static assets in AWS. <-- Just a breadcrumb in case someone else comes looking for insight.

thestick613

comment created time in 3 months

PR opened vadimcn/vscode-lldb

Update value.py for python3 support

When using vscode-lldb for debugging rust, I attempted to access a slice of a vector:

buffer[0:100]

It returned name xrange is not deifned

Looking in value.py I found that there's a reference to xrange, which isn't valid in python3. This similar fix exists (but other way around) here: https://github.com/vadimcn/vscode-lldb/blob/35151d7d2de84376987e2bbc747192034e307584/formatters/rust.py#L10

I'm all ears on how you'd like me to enhance this PR to make it acceptable.

+3 -0

0 comment

1 changed file

pr created time in 3 months

push eventablakey/vscode-lldb

Andrew Blakey

commit sha 7861998f1634ff7b9ca43fe95a5f833f2f96e012

Update value.py for python3 support

view details

push time in 3 months

push eventablakey/chip8

Andrew Blakey

commit sha 51f49c9656ace2d1f053c75a862bf6466e7f1a40

minor cleanup, being more rust-idiomatic

view details

push time in 3 months

more