Imade my design on Photoshop. I set up a canvas that was 1912 pixels in size, and with the pen set as 1px simply clicked until I was happy. I went with the classic Space Invader with subtle Tetris shapes in the background and spots of green and pink to lighten it up.
Why it matters: Compared to third-party cookies, first-party cookies are more widely accepted by browsers and stored for longer periods of time. Using first-party cookies will improve your pixel tracking performance.
Turn Automatic Advanced Matching ON, and the pixel will look for things like email, phone, first and last name, city, state, ZIP, gender. Once a user shares this type of information with you, it will be used for Advanced Matching.
I recently noticed a relatively subtle column defect on my 1-year-old M9-P. Reviewing previous shots in more detail it seems to have been around for 3 weeks or so, affecting about 5% of shots in that time.
Rather than go without my only M body for a long period while Leica remap it, I looked for easy software solutions to do the same thing. In 2009, Adobe released the DNG 1.3 specification, which includes support for image correction opcodes, among others a "FixBadPixelsList" opcode which is meant to take the work of mapping pixels out of the camera firmware and into the DNG converter, which can theoretically apply more sophisticated interpolation algorithms.
However, I couldn't find anything which would enable me to specify a bad pixel map for my affected DNGs, so a I wrote a small Python script to do it. The source code is available here. Only a command-line interface at this stage, and some trial and error with coordinates is necessary because you have to specify the offsets in pre-demosaiced, Bayer array coordinates, but it doesn't touch image data at all and therefore preserves as much image quality as possible.
So far it works very well with Lightroom and ACR (sadly no support for DNG 1.3 opcodes in Aperture). The column defect is completely erased with no noise reduction and no discernible loss of detail in the area. The DNG files aren't damaged at all but I'm keeping the originals just in case.
The Epson R-D1s had simple and effective mapping utility in the menu, and Epson included it in a firmware update for all those who owned an original R-D1. Personally I think the omission of such a utility from Leica is ridiculous, and given that the M9 soldiers on as an in-production model in the form of the M-E, Leica should issue an update for M9-M9P-ME that includes a remapping routine. I can appreciate that remapping is a profit center for the service department, but more than the cost, the inconvenience and downtime is hugely annoying.
I used Photoshop and ACR to open an image exhibiting the issue with all noise reduction turned off. I increased saturation and lightness until the column defect was easily visible, then opened the Info palette and moved the cursor over the column of red pixels. The X-coordinate shown was the one I passed to the pixelfix utility.
Whilst pondering weird ways to use System Remarks and other unloved Substrate tools for strange ends, I stumbled upon this project for a one million pixel image, controlled by remarks, from the early days of Kusama which was inspired by Million Dollar Homepage (an internet relic):
One million pixel image, controlled by remarks on a Substrate blockchain. - GitHub - shawntabrizi/substrate-one-million-remarks: One million pixel image, controlled by remarks on a Substrate blockc...
Twitch Plays Pokmon (TPP) is a social experiment and channel on the video game live streaming website Twitch, consisting of a crowdsourced attempt to play Game Freak's and Nintendo's Pokmon video games by parsing commands sent by users through the channel's chat room. It holds the Guinness World Record for having "the most participants on a single-player online videogame" with 1,165,140 participants. The concept was developed by an anonymous Australian programmer and launched on 12 February...
Heist Hacks are computer minigame hacks that are available from heists. Below is a list of all current hacks with practice links. Additionally, if you are a player in the NoPixel server, using these websites is considered cheating. This page was made for viewers to practice the heist hacks.
Typed Arrays can significantly increase the pixel manipulation performance of your HTML5 2D canvas Web apps. This is of particular importance to developers looking to use HTML5 for making browser-based games.
The next two lines might appear to be a micro-optimisation and in truth they are. But given the number of times the canvas width and height is accessed within the main loop, copying the values of canvas.width and canvas.height to the variables canvasWidth and canvasHeight respectively, can have a noticeable effect on performance.
The ImageData.data property referenced by the variable data is a one-dimensional array of integers, where each element is in the range 0..255. ImageData.data is arranged in a repeating sequence so that each element refers to an individual channel. That repeating sequence is as follows:
Greyscale colours have red, green and blue channels with identical values. So we assign the same value to each of the red, green and blue channels. The sequence of the one-dimensional array requires us to assign a value for the red channel at index, the green channel at index + 1, and the blue channel at index + 2.
The last channel we need to take into account is the alpha channel at index + 3. To ensure that the plotted pixel is 100% opaque, we set the alpha channel to a value of 255 and terminate both loops.
Next we create two ArrayBuffer views. One that allows us to view buf as a one-dimensional array of unsigned 8-bit values and another that allows us to view buf as a one-dimensional array of unsigned 32-bit values.
The next alteration is to the body of the inner loop. We no longer need to calculate the index in a local variable so we jump straight into calculating the value used to populate the red, green, and blue channels as we did before.
Once calculated, we can proceed to plot the pixel using only one assignment. The values of the red, green, and blue channels, along with the alpha channel are packed into a single integer using bitwise left-shifts and bitwise ORs.
Having terminated both loops, we must now assign the contents of the ArrayBuffer buf to imageData.data. We use the Uint8ClampedArray.set() method to set the data property to the Uint8ClampedArray view of our ArrayBuffer by specifying buf8 as the parameter.
The code below, however, rectifies this oversight by testing the endianness of the target processor and then executing a different version of the main loop dependent on whether the processor is big- or little-endian.
Firefox is the only browser I know of at present that has switched out CanvasPixelArray for Uint8ClampedArray as the type of the data property for the ImageData object, in accordance w/ the latest HTML5 spec.
I built it after finding that in some circumstances, Uint32Array was significantly slower then Int32Array, when setting a value. Only Firefox 11 shows a difference in that test, but in my own code I have found a difference in FF 8 too (but am unable to replicate this on JSPerf).
This blog post is inspired, and uses the code from pileofstuff who has been setting up his Christmas lights in Canada! If you are not familiar with the channel, it is a mix of eBay bargains and kit builds. Sort of like a Canadian BigClive :)
If you like what you read...
Sorry to interrupt! But would you like to buy me a cup of coffee? It helps me to pay for hosting this blog, and to buy stuff to hack from Poundshops / Dollar Stores which are used in free projects on this blog. Thanks!
I bought these "fairy lights" (as we call them in the UK) in late 2018 and after a few issues I got them working reliably. There are 50 WS2811 "Neopixel" LEDs in a long chain. They look like standard lights for a Christmas tree, but each of these LEDs can be controlled, any colour, brightness or timing I can control. Best of all they work with most boards (Arduino, Raspberry Pi, CircuitPython etc) and that means I can do lots of hacks!
Bodge Wires?
An integral part of a circuit, especially when you make a mistake...or two! I forgot to send power to the Neopixels, so only the Wemos D1 Mini received power. The bodge wires fixed that problem!
Also YAY I FAILED! Remember kids, failing is learning!
The card back of the star is held in place via a series of small screws which bite into the plastic of the star. Take care removing the back as the card is fragile.
Remove each of the screws, and remember to remove the screws at the battery pack too!
Next, remove the LEDs from the star by pulling them from the plastic holders, take care as we can reuse them!
Next remove the white diffusers (bulbs) from the star. We will need to pinch the back of the plastic bulb and push. Take care as the plastic is quite firm and you may hurt your fingers. Use pliers! To pinch the bulb, not your fingers!
Next we need to measure the diameter of our Neopixel LEDs to see if they will fit through the holes left by the bulbs. If they fit, great! If not, get your drill and stepped drill bit and carefully drill the plastic to the correct size. In my case it was 12mm (the drill bit had a marking for 12mm) and I quickly drilled all 20 holes.
Insert the neopixels around the star, take care inserting them. They can deal with a little wiggle but excessive force will break them!
If the hole is too small, try drilling the hole again from the other side.
The Wemos D1 Mini can be soldered directly to a protoboard, but I wanted to solder in some female header pins, and then solder male header pins to the Wemos D1 Mini. Why? Well if the Wemos dies, then I can flash a new board and drop in the replacement without touching the cirucuit which may break if messed around with too much.
3a8082e126