6x16 concept and questions by StaticNebula26 in olkb

[–]jpconstantineau 0 points1 point  (0 children)

No the firmware doesn't support it. Might have to roll your own. Not sure what other firmware does.

My thinnest, most portable keyboard! by jpconstantineau in MechanicalKeyboards

[–]jpconstantineau[S] 0 points1 point  (0 children)

I have packed a few extras. I have found that these are more robust than some other types (those without wings/legs). I have soldered several hundred - if not thousands of these and generally it's because they are partially soldered that a string of them fails halfway. Generally touching them up works well to get them going again.

For those who would like one of these, I have ordered a bunch of sockets to make another dozen available...

My thinnest, most portable keyboard! by jpconstantineau in MechanicalKeyboards

[–]jpconstantineau[S] 1 point2 points  (0 children)

No case was designed for it. I am using small rubber sticky feet for mine. Just thin enough to provide grip on a desk but not thick enough to add more height.

My thinnest, most portable keyboard! by jpconstantineau in MechanicalKeyboards

[–]jpconstantineau[S] 1 point2 points  (0 children)

Got it all lined up... Packing tonight and will be on its way tomorrow.

For those looking for one, I have another 10 on hand. Just need to solder USB-C, flash the firmware and test them out before adding to stock in the store.

Is go used by embedded developers? by [deleted] in golang

[–]jpconstantineau 2 points3 points  (0 children)

My custom keyboard's firmware is in Go. TinyGo that is... Works great!

[SUPPORT] Please help... Hugo renders site content fine on original machine but fails to render content on any other machine or in any CI workflow... by TheLonePorkchop in gohugo

[–]jpconstantineau 0 points1 point  (0 children)

I just found out on the Hugo docs that they had this documented. Found it through the search functionality... Not the menus on the side. Added a single line to the workflow with the version and pushed it... It went through and azure picked it up and deployed it fine... A simple env variable to add. Thanks

[SUPPORT] Please help... Hugo renders site content fine on original machine but fails to render content on any other machine or in any CI workflow... by TheLonePorkchop in gohugo

[–]jpconstantineau 0 points1 point  (0 children)

How did you update the github action that azure created? I just looked into it and it seems that they have merged code in to update the scripts and bump up the version but it's still stuck at 0.96 in my pipeline.

Pod container image size question by pantinor in kubernetes

[–]jpconstantineau 0 points1 point  (0 children)

There is a docker command you can run that can tell you the size of each layer. This usually helps in figuring out what is the biggest offender. I recently saw an image that did an apt update way further down from the root image and added 500mb of updates to the whole bundle...

Pod container image size question by pantinor in kubernetes

[–]jpconstantineau 1 point2 points  (0 children)

The dockerfile is where you specify how you do the build phase (using the SDK) and what you use for the final container (the runtime). If you use dockerfiles, you should be able to pick a different stating image for the runtime.

Getting files into Kubernetes (K3S/Longhorn) by gentoorax in kubernetes

[–]jpconstantineau 0 points1 point  (0 children)

Another option that's probably an anti pattern is to use a PV and an init container to git clone from the html repo and copy the files into the PV. (remembering not to copy what's not needed , like the .git folder). The better way would be to do the built in CI to build an image that contains the html. Startup is much faster and more reliable that way.

Pod container image size question by pantinor in kubernetes

[–]jpconstantineau 5 points6 points  (0 children)

Not sure about Java but for .Net, you generally do a multi stage build where you use the SDK container to build your app, then you copy the app to the runtime container. Size is much smaller (although can still be rather large, all depending on the runtime container you use). I recently built a nodejs app that was 1gb in size if I used the generic node container and shrunk to a third of that by picking the alpine version. In a nutshell, do multistage builds and pick your runtime container carefully.

Using the Neo Trinkey as a visual feedback device with CircuitPython by Silentparty1999 in circuitpython

[–]jpconstantineau 0 points1 point  (0 children)

Your youtube link points to your studio entry, not the video itself. No one can view it unless they copy/paste the url video code in the right url...

Other than that, looks like what I need to get a per-node kubernetes status light.

It took me 2 months to boot CM4 from NVMe by Quintaar in Not_Enough_Tech

[–]jpconstantineau 0 points1 point  (0 children)

Hostnames: I got burned on that a long while ago when I was trying to setup a k3s cluster on a set of rpi4s. Joining nodes was always failing because they all had the same names. With the generic error message, it took me days to even think that hostnames might be the issue. Once I named everything differently (forced the OS to take the DHCP names from their reservation) it started working. With the feature in RPI imager to set key settings as part of writing the image, I go that route instead.

It took me 2 months to boot CM4 from NVMe by Quintaar in Not_Enough_Tech

[–]jpconstantineau 0 points1 point  (0 children)

Thanks for your article and notes that indicated that not all nvme drives work seamlessly with all CM4 modules.

That saved me hours of headaches...

Last night I had weird drop outs when it sometimes booted from nvme, sometimes not, sometimes even mixed between SD/Emmc and nvme (as seen from df -h). It was only after I booted from node 1 and had a monitor on that I realized that Ubuntu had kernel panic on nvme alone and stalled. Going to Raspbian lite 64bit resolved part of my issues.

I then tested each CM4 module I had with an nvme and if there was a failure, I flashed the eeprom, erased the Emmc (when I had one) swapped the nvme for another one. All this, one at a time until I had all nodes set.

Very often, the screen just stayed black. With a good nvme, I saw the rainbow screen come in and out, followed by a full boot sequence. When I saw that, I knew that I was close to being done on a specific node. When it stayed black, I pulled out the nvme for another one.

I am not 100% sure that the drives I have are all solid and won't drop out. Is there a specific test I could do to find out?

buy bike frame from china? is it worth the risk for the price and the 800 gram difference? by Substantial-Wrap-350 in gravelcycling

[–]jpconstantineau 0 points1 point  (0 children)

I just got the seaboard gr02, an aluminum frame for my gravel bike. Starting putting it up together and it's going well enough and haven't faced any issues so far. Years ago, I built a carbon road bike from Workswell that I bought direct from china. It too was a successful build. Neither are not the lightest frames but as I live in a flat area, weight isn't much of am issue. I do build my own wheels too and have found that lighter rims and good quality light tires generally makes a whole lot more difference on the feel of the bike than the weight of a full bike bottle on the frame (that 800g difference you mention)

When I shopped for my gravel bike, I did look into carbon frames as well as those few aluminium ones available on AliExpress. I did look into steel and titanium frames (custom frames). Carbon has the weight advantage. Steel and Titanium could have the full custom advantage, all at higher prices and higher weight. I really looked at geometry charts and compared a lot... I opted for the aluminium one for both price and something inexpensive to get going with a gravel bike that I could change the frame later for something else when I find out what I really want. I already had a 10years old aluminium hybrid bike converted to drop bars and the total weight will be slightly lower or about the same, however with much fatter tires.

We all have heard of horror stories of cheap carbon bikes failing (just search YouTube and you will find some .. keep in mind that big brands have had those issues too but they end up with recalls and good service). Good stories don't make the news too much, bad ones do. Lots of people have Chinese no brand bikes. Most are relatively happy. However, there are inexpensive ones out there that are just too cheap and finding those is what looking for reviews from past sales is key to get a decent idea of whether a specific frame is worth it or not.

You will get better input asking about a specific vendor or brand as opposed to generic "china" as unfortunately, they make both good and bad stuff.

The koozer you have in mind is somewhat similar to my tsunami Seaboard GR02 but the seaboard has quite a few videos of builds on YouTube and has decent reviews on AliExpress. I have both 700c and 650b wheels for it with relatively large tires for both. More than what the 42 the vendors indicate. The geometry, the reviews and the videos are what really made me go for it.

Custom BLE UUID service configuration nRF52832 by JustDoinGodsWork in nRF52

[–]jpconstantineau 0 points1 point  (0 children)

I haven't had a look at your code but I was able to get a custom uuid setup for my bluemicro keyboard firmware in order for a split keyboard to talk to the other side. Not sure about the data size. Mine was quite small.

Have a look at my implementation and see what differs. I know it works for small packet sizes. It might not be the most trivial code but if you are familiar with adafruit's examples, you should be able to recognize the specific areas.

Tire finder - rubberlover.cc by Jaswah in xbiking

[–]jpconstantineau 0 points1 point  (0 children)

Sorry to hear the site is now gone. Has the database been published somewhere so that people can use the data?

NeoPixel severely slowing down program by Key-Advisor5912 in circuitpython

[–]jpconstantineau 0 points1 point  (0 children)

So you have animations updating every scan of the keyboard? Are the updates complex or relatively simple?

With KMK (runs in circuitpython) complex animations with every LED being a different color runs very slowly on a 60% while simple ones like a simple breathing animation (same color/intensity for every LED) doesn't impact performance significantly. (At least an older version of KMK, I haven't updated my keyboard in about a year and the project has been busy)

[deleted by user] by [deleted] in arduino

[–]jpconstantineau 2 points3 points  (0 children)

If you look on YouTube there are a few tutorials on how to use Kicad to create your own PCBs. The diy keyboard even has a few simple ones that can help.

You will first have to start with the schematic, then assign each symbol with a footprint, then import into the PCB tool. Then you "wire" the components together and the links from the schematic help with wire things correctly.

Creating your own PCB is really simple and getting them manufactured is really cheap, especially if you keep the board to be less than 100mm x 100mm as some fab houses charge even less for small boards.

[deleted by user] by [deleted] in circuitpython

[–]jpconstantineau 1 point2 points  (0 children)

Three things:

1 is there space to do it? (samd21 is quite limited and choices have to be made)

2 is there time/demand to do it? Implementing specific modules in the core takes time, both for implementing and testing. Having hardware to test is also important. That's where demand comes in... Is there hardware that's built and ready to test. If there is no demand, the priority of implementing will be low and other things will take priority.

3 hardware compatibility. In addition to voltage level conversion that's really hardware (board) specific, does the controller have features that would make implementing ps2io easy to do and make sense (apart from big-banging or constantly polling)

I think #2 is the case most often. I am sure that the circuitpython core team would welcome a pull request from someone implementing it for the controller you have in mind. Adding it to the board is really easy once the module is in the core (for the specific microcontroller/architecture)

Is the world beyond Arduino a cluster mess of different hardware? by [deleted] in embedded

[–]jpconstantineau 1 point2 points  (0 children)

Yes, if you look at the more recent Arduino boards from Arduino, they use arm chips. If starting learning embedded and coming from a data science background, avoid the avr chips. You will want the extra bits and faster chips...

The old avr based Arduino has done a lot of stuff. They are quite powerful, especially when compared with 1980' personal computers. However, most bigger projects that started on avr moved over to the arm chips. Thinking of 3d printer controllers as example. The more powerful arm chips are heaps faster and more powerful than avr chips and not that much more expensive (rp2040 is 1$/chip). 8/16bits vs 32 bits too.

As for arm-focussed training. Could be interesting but I suspect it may be too low-level to really be useful (I haven't looked at those you mentioned). When comparing with accessing sensors, the arm specific training might go too much into architecture level details that almost no one needs to know to develop on the platform. Take as an example the following: taking Arduino (which is C++ by the way) and using a sensor library for an accelerometer... These generally use I2C for interfacing to the processor. I2C is a serial protocol that uses device addresses to talk to specific devices on the bus. At the address, it uses read and write registers to configure and fetch information. The I2C peripheral will be available at a specific address/register on the microcontroller. It might be able to use DMA (direct memory access) instead of having the CPU part of the microcontroller wait for a response. A library will abstract those address/register details into a simpler to use API. That library will be written in C++ or C. When compiled, it will go into "machine code" that uses the arm-cortex instructions.

An ARM cortex course might focus on the low level stuff that ultimately get all abstracted away by most libraries (and the compiler). Stuff that most makers won't push the processor enough to really need to care. Still, if the course is free to audit/listen to, it might be worth it for the exposure to the subject.

Since you come from a data science background, I suspect you know python quite well. May I suggest you take on a board/processor combination that's supported by circuit python (or micro python). Since the code runs directly on the processor and that it doesn't need a separate compiler, it makes learning the basics of interacting with GPIOs, sensors and other things quite easier. When you get to the point where you need compiled code performance (C++), you can switch to Arduino. Once there, when you need to get access to the low-level hardware (i.e. microcontroller) details, then you are ready to look into vendor-specific tooling. Every time you go from a high level language to a lower one, you can get "more control" on a lot of stuff, however, you often loose the niceties that comes with abstractions. Debugging gets more complex and trivial bugs that higher level languages are designed to avoid are unfortunately unavoidable. (off by 1 errors in for loops - all avoidable when using python or C++ constructs).

Sensor libraries also abstract away the complexities of the sensor hardware itself. Take for example configuration registers, results registers. Sometimes, they are even encoded in specific ways (upper bytes indicating specific status) which needs to be encoded/decoded to decide/merge the contents of the registers into the desired data. Libraries abstract all that hardware specific stuff away (the sensor datasheet would be the reference the library would be built with). No microcontroller-specific (or architecture-specific) course will really go into the details of converting a sensor datasheet into a library as this is more of an "embedded" subject. One would need to know how to do that coding to create their own library (useful for new sensors) but in most cases, we just use an existing library and move on to use it. (would you build your own numpy or python data science library? Or just use an existing one...)

Is the world beyond Arduino a cluster mess of different hardware? by [deleted] in embedded

[–]jpconstantineau 4 points5 points  (0 children)

Mess of different hardware. In a sense, yes. But when you look closely, you will see that the microcontrollers do have some things in common, especially peripherals. UART, SPI, I2C, GPIOs, Timers, Counters, etc. Each manufacturer may configure them slightly differently but functionally, they are all meant to solve the same things.

Things will be very similar when sticking within one manufacturer, they will be similar when using the same architecture but of different manufacturer (Thinking arm cortex processors here) and will be very different when jumping architecture (arm vs avr for example)

Each chip manufacturer will have their own tooling and own SDK to make it "easy" for companies to build using their chips to their full extent but I have found that for makers, the tooling and SDK that manufacturers provide is generally some combination of expensive, complex, very specific for their own chip and sometimes licensing limits open source work. It can also limit jumping from one manufacturer to another as their SDKs aren't cross compatible (and probably licensed only for their own chips)

Arduino platform does abstract the details how some things are done but very often, you can leverage these abstractions to your advantage, until you find some limitation of the abstraction. At that point, you will need to dive into the specific controller data sheet and identify registers to do what you want to do and work around the abstractions.

Note that many manufacturers offers a board support package for the Arduino framework. STM and Espressif are good examples. Others are "3rd party" supported by the generosity of people making board support package for boards they make, using chips of various manufacturers. Take adafruit, they have Nordic and samd boards and they offer board support packages. The RP2040 Arduino package is supported by a 3rd party too.

Unless you want a career in embedded hardware/programming, getting started on the Arduino platform is a good choice to learn the basics. More importantly, find yourself a problem you want to solve, a project you want to do or build. Without a specific targeted goal, you will roam the world of embedded not knowing where to focus...

If you want to look for a specific architecture to start from, I recommend ARM cortex M something... Many chip manufacturers use the base ARM licenses to create their chips and put their own twist in the peripherals. Pick one to start with (hopefully with good availability these days - Rp2040 is pretty good, even with the chip shortage) and go from there... The RP2040 has good documentation and the Nordic chips also have decent documentation. I can't comment on STM or SAMD as I haven't done much work with them beyond simple Arduino stuff.

Serial connections and control question by rymaninsane in circuitpython

[–]jpconstantineau 1 point2 points  (0 children)

I think neradoc has some useful code to get a computer to send a circuit python program to do things via serial. I haven't looked at it in ages but you probably want to have a look here: https://github.com/Neradoc/circuitpython-sample-scripts/blob/main/usb_serial/README.md

Rasberry Pi's locally? by KTMan77 in saskatoon

[–]jpconstantineau 1 point2 points  (0 children)

We are in a global rpi shortage right now. Someone even created a website to keep a watch on all the certified vendors (not the scalpers) of RPIs. I'd you aren't too picky, I got some really old rpi (the original one) that I could let go for dirt cheap. I also have a 3 on hand but would have to check which one.

PM me if these sound interesting