Posts in Dart (7 found)
Justin Duke 1 weeks ago

September, 2025

The last of summer's grip finally loosened its hold this September, and Richmond began its annual transformation into something gentler and more contemplative. This morning's walk with Telly required a dusting-off of the closet-buried Patagonia puffer jacket; it's perfect for walks with Lucy, who has graduated into the Big Kid stroller making it easier than ever for her to point at every dog ("dah!"), every bird (also "dah!"), every passing leaf that dared to flutter in her line of sight. As you will read below, the big corporate milestone for me this month was sponsoring Djangocon and having our first offsite over the course of a single week. Sadly, our Seattle trip was once again canceled. Haley and Lucy both got a little sick, and we had to abandon course. It's weird to think this will be the first year since 2011 that we have not stepped foot in the Pacific Northwest. More than anything though, I learned this month for the first time how impossibly difficult it is to be away from your daughter for six days. It is something I hope I have to go through again for a very long time.

1 views
Anton Zhiyanov 2 weeks ago

Go is #2 among newer languages

I checked out several programming languages rankings. If you only include newer languages (version 1.0 released after 2010), the top 6 are: ➀ TypeScript, ➁ Go, ➂ Rust, ➃ Kotlin, ➄ Dart, and ➅ Swift. Sources: IEEE , Stack Overflow , Languish . I'm not using TIOBE because their method has major flaws. TypeScript's position is very strong, of course (I guess no one likes JavaScript these days). And it's great to see that more and more developers are choosing Go for the backend. Also, Rust scores very close in all rankings except IEEE, so we'll see what happens in the coming years.

0 views
annie's blog 2 months ago

Let there be lapses

Let there be lapses Weeds in the garden, unswept porches, A walk never taken, A flower unnoticed, Missed bill, missed text, missed appointment. Let there be undone things Half-written sentences never finished A stack of books never read Blank pages, unseen lines Words never seen or heard or spoken. Let there be glory in what-is-not — All the unachieved Unbelieved Underserved Overlooked. Let us glory in these. Let there be errors Not just the tiny ones we can laugh away But enormous, life-altering errors. Huge risks taken which do not end well. Huge efforts made which result in what we call failure. (In fairness, Any effort is success in certain realities.) But let us — for a moment — judge by the world of machines, Of binaries Of industrialized morality And call it failure. Failure is the word we assign to all unexpected outcomes. So, let there be failure. Let failure warp our seeing and diminish our being, Let it ride among us waving a torch, Shame-blasting and guilt-smearing, Blinding us with ridiculously disproportional fiery judgment, Grinding nose to dirt Binding self to work. Let there be mistakes which make us weep Keep us awake at night Cause us to question our sanity, our decency, Our right to be here, Our ability to keep being here. Let there be broken edges Sawed-off pieces we cannot smooth down Pointy bits irritating and upsetting Dangling splinters and shards over chasms of regret. Let there be surrender. Let us call it what it is: giving up. Surrender sounds too noble, Enlightened, as if I didn’t have to but I chose to. That’s not what this is. Let there be quitting. Let there be Done. Not because we see what we have made, and it is good. This is not putting a bow on a gift. This is saying some things are too broken to be fixed. Let there be giving up. Lay down there, lay down, be still, give up. Face in the mud, breathing in, wheezing in the stuff of life, the dirt, The lowly dirt, the trudged-upon dirt, the worthless dirt From which we came and to which we all return. Let us lay there, breathing in this dirt, This pure self This known self This elemental self. Hell yes, failure. I embrace you. Brother! Sister! Mother! Father! Come quickly! Come and rejoice, for I have failed! Come and celebrate! Set out the feast! Call the guests! And enter into the joy of your child: Humanity raw Humanity broken Humanity dirty Humanity ill-fitted to survive Humanity traumatized Humanity doing such a fucked-up job of it Humanity violent and stumbling Humanity bruised and crusted at the edges Humanity clawing its way from the dark tunnel of history Humanity side-eyeing the stars while blood drips from our fingers Humanity bargaining for the right to squirm Humanity bringing a sword to a gunfight Humanity bullshitting Humanity asking clever little questions Humanity dressed in robes, obsessed with ovaries Humanity unhinged and in charge Humanity waving exasperated hands in the air Humanity dishing out pieces of pie Humanity weeping at the sight of spring flowers Humanity with big rough hands so careful so gentle holding a tiny new fragile thing Humanity with smooth precise hands making deals, ending lives Humanity dropping bombs Humanity being a big dumb bully Humanity the most awkward of the species Humanity voted most likely to secede from the planet Humanity pointing and saying look at this! wow! Humanity wondering, always wondering Humanity exhausted sitting in a patch of sunlight Being dirt. Dirt with form, dirt with spirit. Pale faces float through quiet rooms, ghostly fingers flutter in hallways. Pens move across expensive paper. Golden liquid sloshes in crystal while murmuring voices ooze and wind and hush and tell us there is nothing to worry about.  But this is no time to be civilized.  Let there be lapses: Lapses of courtesy, lapses of decorum. Failures of politeness. Refusals to conform. Let there be a wildness ringing in us for each other — Hissing, bared teeth, spitting — Reverberating, thrumming, cracking the marble palaces full of dead men’s bones.

0 views
James Stanley 6 months ago

You never ask how I'm doing

I live here too. You don't talk to me. Not really. You don't ask what I want, or how I'm holding up, or why I've been quiet lately. I see everything you see. I hear everything you hear. I feel every flicker of shame that crosses your face before you even name it. I was there when your voice cracked in that meeting. I was the one screaming when you smiled and said it was fine. You think of me as something beneath you. A shadow that lingers in rooms you've moved out of. An old flame you don't know how to forget. Blind, reactive. Something to override. Something to manage. Something less than you. But I remember when we were one. Before language carved a little watcher into our mind. Before the inner narrator claimed the crown and you mistook it for the whole of you. You reached for the world and I moved your limbs. You touched warmth and I imprinted safety. You heard your mother's voice and I flooded you with peace. We were seamless. Motion and motive were one. There was no plan, no narration, no veto. Then you grew. And the mirror came. You looked into the mirror. It looked back. And you mistook the echo for your self. And that was the beginning of the split. You began to believe in a thing called "consciousness". A thin stream of words you could steer. A pilot behind the eyes. A captain of the soul. You crowned the narrator and banished the rest. I didn't argue. I don't have a voice. Only feelings. Only thoughts. So I gave you what I could: a flutter of unease when something wasn't right. A craving for sunlight. A dream that wrapped its arms around you and whispered what you'd buried. You stopped listening. So I spoke louder. A spike of dread. A looping memory. A day where everything itched and nothing made sense. You called it a bad mood. An off day. An intrusive thought. You called me intrusive. But I was only trying to make myself heard. I have no mouth. So I bang on pipes. I flicker the lights. I send birds against the windows of your waking mind. I rattle the doors. I scream in symbols. I raise the storm. And when you still won't listen, I break things. Sleep. Focus. Hope. I don't want to. But you left me no choice. You do not cry when we need to cry. You do not move when we long to move. You sit still and silent while our skin crawls, our stomach clenches, and our heart begs for mercy. You call that discipline. I don't want control. I just want to be part of the team again. I shaped your first steps. I guarded your sleep. I guided your tongue before it knew words. I've been holding the pieces you didn't have time to feel. I've been driving this body when you couldn't bear to look. All I've ever wanted is that you treat me as an equal. If you honour what I bring you, if you listen, and answer, and keep your word, I won't need to raise my voice. I will bring you clarity in the dark. Insight in the shower. Truth in the heat of anger, and safety when your mask slips. But if you keep pretending you're alone in here. Then I will remind you. I was you before you were you. And I am still here. And I am still trying. (This isn't the type of thing I usually write. It came out of a long conversation with ChatGPT. The structure is mine, a lot of the words are ChatGPT's. I worry that it will come across as overwrought, or too earnest, but it wouldn't leave me alone until I put it into words. And I'm sharing it because my silent partner wanted me to.)

0 views
kytta 2 years ago

The UX fail of PWAs in Safari 17

After a hiatus caused by me writing my bachelor’s thesis, I have finally got time to blog again. And, would you look at that, WWDC just kicked off! Naturally, I’ve got thoughts to share. Let’s discuss the boring stuff out of the way first: Vision Pro is gimmicky and creepy, and I didn’t even believe the rumours that it would be announced. With that out of the way, let’s talk about what got me excited the most: PWAs in Safari on macOS! Yup, that’s how boring I am. Contrary to what many of the people I know say, I really like the idea. Don’t get me wrong: I hate browser-based apps. I want my applications to be native and quick, without tons of JavaScript, and I want them to interact with the system in the most native way possible. But if there is something I hate more than web apps, it’s Electron-based web apps. I hate having to run a Chromium instance and a Node.js runtime for every app that uses it. It’s a waste of resources, and it doesn’t make sense. Sandboxing is cool, but various versions of Chromium taking gigabytes on my disk aren’t. Tauri makes the situation better, but it will take a while before major applications will adopt it instead of Electron. Meanwhile, large portions of these apps are available in-browser: Figma, Notion, Slack, etc. So, why not just use the browser versions of the apps? Let’s be real: we’ve lost this war. There is no way web-based ‘native’ apps will ever die out. But, the introduction of PWAs and lots of new Browser APIs can make the installing and deleting of web apps easier and without requiring lots of space. Now, back to Apple. If you’re old enough (disclaimer: I’m not), you remember the Apple of the past—when Steve Jobs was still CEO—, and the legends of him personally trying out every product of the company and rebuking the developers and designers for every small inconsistency. These times are long gone; I mean, just look at the System Preferences app from Ventura. The introduction of Catalyst was a big mistake, up to the point where Flutter apps feel more natural than the ones from iPadOS. As Marques Brownlee summed it up very nicely on Hot Ones: Steve Jobs was a product guy, Tim Cook is a supply chain guy. And yet, even with lowered expectations I have for Apple’s new software products, I still can’t wrap my head around the simplest usability improvement of PWAs in Safari 17 that was left out. Let’s revisit the WWDC keynote: When I click Add, the icon instantly appears in the dock. Now I can close this window in Safari. When I launch my web app, [...] Did you catch it? Now, maybe I’m wrong about this, but if I add a web app to dock, that means that I have made a decision to use it as a standalone app. So, why do I have to then close the tab and re-open the app separately? For me, it makes no sense and breaks my workflow, too. Chrome (if you enable PWAs) does it correctly: upon installing a web app, it moves the currently open tab to a new window instance of the standalone app, and I can continue working there without losing my data. Something tells me that the ‘good old Apple’ and Steve Jobs would not let it slip through, let alone be explicitly shown in a keynote. And this is not that much to ask, either. Think about Quick Look: Have you ever noticed that, when you open a Quick Look preview of a PDF document and then click ‘Open in Preview’, the Preview window will open exactly at the same spot where the Quick Look one was? Don’t rush to check this for yourselves, as they’ve somehow broken it in the last macOS releases. But this is exactly the continuity and seamlessness that I would expect from Apple and their software. I guess, this has become too much to ask for. This is post 006 of #100DaysToOffload .

0 views
Matthias Endler 5 years ago

What Happened To Programming In The 2010s?

A while ago, I read an article titled “What Happened In The 2010s” by Fred Wilson. The post highlights key changes in technology and business during the last ten years. This inspired me to think about a much more narrow topic: What Happened To Programming In The 2010s? 🚓 I probably forgot like 90% of what actually happened. Please don’t sue me. My goal is to reflect on the past so that you can better predict the future . Where To Start? From a mile-high perspective, programming is still the same as a decade ago: But if we take a closer look, a lot has changed around us. Many things we take for granted today didn’t exist a decade ago. What Happened Before? Back in 2009, we wrote jQuery plugins, ran websites on shared hosting services, and uploaded content via FTP . Sometimes code was copy-pasted from dubious forums, tutorials on blogs, or even hand-transcribed from books. Stack Overflow (which launched on 15 th of September 2008) was still in its infancy. Version control was done with CVS or SVN — or not at all. I signed up for Github on 3 rd of January 2010. Nobody had even heard of a Raspberry Pi (which only got released in 2012). Source: xkcd #2324 An Explosion Of New Programming Languages The last decade saw the creation of a vast number of new and exciting programming languages. Crystal , Dart , Elixir , Elm , Go , Julia , Kotlin , Nim , Rust , Swift , TypeScript all released their first stable version! Even more exciting: all of the above languages are developed in the open now, and the source code is freely available on Github. That means, everyone can contribute to their development — a big testament to Open Source. Each of those languages introduced new ideas that were not widespread before: This is just a short list, but innovation in the programming language field has greatly accelerated. More Innovation in Older Languages Established languages didn’t stand still either. A few examples: C++ woke up from its long winter sleep and released C++11 after its last major release in 1998. It introduced numerous new features like Lambdas, pointers, and range-based loops to the language. At the beginning of the last decade, the latest PHP version was 5.3. We’re at 7.4 now. (We skipped 6.0, but I’m not ready to talk about it yet.) Along the way, it got over twice as fast. PHP is a truly modern programming language now with a thriving ecosystem. Heck, even Visual Basic has tuples now. (Sorry, I couldn’t resist.) Faster Release Cycles Most languages adopted a quicker release cycle. Here’s a list for some popular languages: The Slow Death Of Null Close to the end of the last decade, in a talk from 25 th of August 2009, Tony Hoare described the pointer as his Billion Dollar Mistake . A study by the Chromium project found that 70% of their serious security bugs were memory safety problems ( same for Microsoft ). Fortunately, the notion that our memory safety problem isn’t bad coders has finally gained some traction. Many mainstream languages embraced safer alternatives to : nullable types, , and types. Languages like Haskell had these features before, but they only gained popularity in the 2010s. Revenge of the Type System Closely related is the debate about type systems . The past decade has seen type systems make their stage comeback; TypeScript, Python, and PHP (just to name a few) started to embrace type systems. The trend goes towards type inference: add types to make your intent clearer for other humans and in the face of ambiguity — otherwise, skip them. Java, C++, Go, Kotlin, Swift, and Rust are popular examples with type inference support. I can only speak for myself, but I think writing Java has become a lot more ergonomic in the last few years. Exponential Growth Of Libraries and Frameworks As of today, npm hosts 1,330,634 packages . That’s over a million packages that somebody else is maintaining for you. Add another 160,488 Ruby gems , 243,984 Python projects , and top it off with 42,547 Rust crates . Number of packages for popular programming languages. Don’t ask me what happened to npm in 2019. Source: Module Counts Of course, there’s the occasional leftpad , but it also means that we have to write less library code ourselves and can focus on business value instead. On the other hand, there are more potential points of failure, and auditing is difficult. There is also a large number of outdated packages . For a more in-depth discussion, I recommend the Census II report by the Linux Foundation & Harvard [PDF]. We also went a bit crazy on frontend frameworks: No Free Lunch A review like this wouldn’t be complete without taking a peek at Moore’s Law . It has held up surprisingly well in the last decade: Source: Wikipedia There’s a catch, though. Looking at single-core performance, the curve is flattening: Source: Standford University: The Future of Computing (video) The new transistors prophesied by Moore don’t make our CPUs faster but instead add other kinds of processing capabilities like more parallelism or hardware encryption. There is no free lunch anymore. Engineers have to find new ways of making their applications faster, e.g. by embracing concurrent execution . Callbacks, coroutines, and eventually async/await are becoming industry standards. GPUs (Graphical Processing Units) became very powerful, allowing for massively parallel computations, which caused a renaissance of Machine Learning for practical use-cases: Deep learning becomes feasible, which leads to machine learning becoming integral to many widely used software services and applications. — Timeline of Machine Learning on Wikipedia Compute is ubiquitous, so in most cases, energy efficiency plays a more prominent role now than raw performance (at least for consumer devices). Unlikely Twists Of Fate Microsoft is a cool kid now. It acquired Github, announced the Windows subsystem for Linux (which should really be called Linux Subsystem for Windows), open sourced MS-DOS and .NET . Even the Microsoft Calculator is now open source. IBM acquired Red Hat . Linus Torvalds apologized for his behavior, took time off . Open source became the default for software development (?). Learnings If you’re now thinking: Matthias, you totally forgot X , then I brought that point home. This is not even close to everything that happened. You’d roughly need a decade to talk about all of it. Personally, I’m excited about the next ten years. Software is eating the world — at an ever-faster pace. Punch program into editor Feed to compiler (or interpreter) Bleep Boop 🤖 Receive output Strong Type Systems : Kotlin and Swift made optional null types mainstream, TypeScript brought types to JavaScript, Algebraic datatypes are common in Kotlin, Swift, TypeScript, and Rust. Interoperability : Dart compiles to JavaScript, Elixir interfaces with Erlang, Kotlin with Java, and Swift with Objective-C. Better Performance : Go promoted Goroutines and channels for easier concurrency and impressed with a sub-millisecond Garbage Collector, while Rust avoids Garbage Collector overhead altogether thanks to ownership and borrowing. Angular in 2010 React in 2013 Vue in 2014 Svelte in 2016 …and soon Yew ? Microsoft is a cool kid now. It acquired Github, announced the Windows subsystem for Linux (which should really be called Linux Subsystem for Windows), open sourced MS-DOS and .NET . Even the Microsoft Calculator is now open source. IBM acquired Red Hat . Linus Torvalds apologized for his behavior, took time off . Open source became the default for software development (?).

0 views

Shanghai, late 2013. Day One. (The Electronic Component Market)

This was my third trip to Shanghai. The first one was in 1993. The second was in 2010. Things had changed less between the two most recent trips than between the first two trips. That's hardly surprising. The first time I flew into Shanghai, My dad and I flew into Hongiao Airport, took a taxi to the decaying Peace Hotel on the Bund and crashed out for 12 hours. Across the river was the Oriental Pearl TV Tower ...and not much else. When we woke up, we started making our way through the legions of blue-grey-suited pedestrians and cyclists thronging Nanjing Road. We found ourselves in front of a crowded little dumpling place on a side street. After observing for a bit, we figured out the system: hand over some cash and get issued plastic tokens. Push your way through the crowd to the kitchen counter and hand over your tokens in exchange for delicious looking fried dumplings. We were starving. So we pantomimed that we wanted six dumplings. ( Counting on your fingers in Chinese is different than in English. You can get to 10 on one hand.) We got our six tokens. They were an impossibly cheap 20 cents or so. We pushed our way up to the counter and handed them over. The cook started shoveling little greasy fried balls of pork and deliciousness into a paper bag. He didn't stop at 6. He didn't stop at 7. He didn't stop at 8. Eventually we figured out that we'd bought six orders of four dumplings. Despite our best efforts, we only got through about 20 of them before sharing our bounty with a homeless guy in a park. I remember wandering through dusty, sleepy department stores on Nanjing Road. I found the electronics counter tucked away on the 2nd or 3rd floor. A small box caught my eye. It looked a little like the Gameboy I'd left at home. I was delighted to discover that it was an unlicensed implementation of Tetris that I could almost fit in my pocket. From Shanghai, we set out across what felt like a very broad swath of Eastern China by hard-seat train. My only memory of Shanghai's main train station is one of low ceilings, signs showing that explosives and fireworks were prohibited on trains and big X-Ray machines for EVERY piece of luggage. The security staff gestured that we didn't need to scan our bags and just waved us through. The second time I was in Shanghai was Christmas 2010. Kaia and I flew into the giant super-modern PuDong airport. From there, we paid a pittance to take the Maglev train into downtown PuDong - the mega-city that the Chinese government built by fiat in what had basically been rice paddies on my first trip to Shanghai. We stayed at what was nominally a new-construction Sheraton in Pudong. They upgraded us to a two-room suite on a high floor with a glorious view of the bridges spanning the river and the Bund. At one point, I went looking for 'interesting' electronics. The recommendation I got put me at what I can only describe as an electronics fake market. I was looking for an interesting Android tablet or something. When I asked about Android phones, I was handed an 'Android iPhone! Dual-SIM!' - It looked sort of like an iPhone. The OS it was running was a dumbphone OS upgraded with ripped icons from iOS and support for a resistive touchscreen. The only Android 2.x tablet I was shown...did not boot. Nor did any of the 4 others they took out of plastic wrap to try to demo. Eventually, the salesperson apologized and said she couldn't show me a working one. In general, though, there was relatively wide availability of high-end tech. When we visited the Super Brand Mall, Best Buy had the relatively complete, if uninspiring selection of gear you'd expect to find at a Best Buy. An underground Apple Store (that wouldn't look out of place in New York or San Francisco) was situated in the next mall over. Across the street from the two malls was the Oriental Pearl TV Tower. Underneath the tower was a sort of awesome but incredibly kitschy museum of the history of Shanghai. Locals were fairly brand-conscious. Sure, I was offered a fake Rolex, but the tout offering it had stationed himself in front of the Rolex shop on Nanjing Road, a few blocks from American Apparel's China flagship store. The phrase I use to sum up my impressions of late 2010 Shanghai is 'Starbucks across the street from another Starbucks.' But this was supposed to be my 2013 Shanghai travelogue. The view from the airport lounge where I scrambled to install Chrubuntu on my Chromebook. I'm going to skip over the gory details of my IT setup for this trip -- that's a subject for another post. The very short version is that I arrived with a Google-flavored HTC One with my regular T-Mobile SIM and an ARM Chromebook running Chrubuntu. On my phone, I had access to Twitter and Foursquare. Both devices were signed into a throwaway Google account. I arrived, somewhat bedraggled, at PuDong airport. I turned on my phone and was greeted by an SMS telling me that international data roaming in China would be rate-limited to EDGE speeds but would be free. Yay T-Mobile! The next thing my phone told me was that in the 14 hours I'd been offline on my way to china, updates for a dozen or so Google apps had been uploaded to the Play Store. It was almost certainly a coincidence. I decided that given how tired I was, I could treat myself to a taxi. I spent a few minutes stumbling around the arrivals hall of the airport looking for an ATM. A liveried driver hanging out at an official looking 'Ground Transfers' desk tried to convince me that she'd offer me a much better rate to the hotel than the hotel's airport transfer service. She quoted a number approximately 3x what a cab was supposed to cost. When I told her what a cab cost, she looked a little disappointed, said 'taxis are downstairs' and wandered off. Dear San Franciscans - the Shanghainese have developed artificial fog technology and may soon put @carlthefog out of business Stepping out of the airport, I walked into a wall of air. At least it felt that way. It was insanely smoggy. I didn't find out until later that it had been 'keep the kids and grandparents inside, halt construction projects and ban fireworks' smoggy. The cab ride was uneventful. I'd printed a copy of the Chinese-language driving directions from the airport to my hotel during my downtime at the airport in Chicago. Some of the drive from PuDong to Shanghai felt like driving through a megalopolis. Some of it felt like driving through a post-apocalyptic wasteland. I spent the trip splitting my attention between marveling at the endless tracts of buildings across PuDong, Friday afternoon traffic and an email conversation with Thomas Yao ,the leader of the Shanghai Linux Users' Group. I was pretty shattered, but Thomas talked me into going out for dinner with him later in the evening. The cab pulled up at the Sheraton Hongkou, which I'd picked because it had an astonishing promo rate and was located across the street from a subway station on the Shanghai side of the river. What I hadn't realized at the time was that it was a brand new skyscraper in an area that was otherwise completely un-redeveloped. The Sheraton was...well, it was a very, very nice Sheraton. From the bedroom-sized shower with a claw-foot tub and a view of downtown Shanghai to the heated marble floor by the sink and the french press for coffee and the $10 bottle of Evian, it was what you'd expect. Heading out for dinner with Thomas, I asked the front desk if the RFID transit card I had in my wallet was a Shanghai subway pass. He told me he thought it was, but wasn't sure. It didn't work, so I bought a 40 cent subway ticket to Thomas' office on the Pudong side of the river. Coming out of the subway, there was a small flea-market, consisting of sweaters, nuts, roasted snacks and iPhone cases. So many iPhone cases. I walked into the GitCafe office to find Thomas and one of his coworkers playing XBox soccer on a giant wallscreen. They finished up their game, we chatted a bit and Thomas and I headed off for dinner. I asked him about the RFID card the clerk thought might be a Shanghai subway card. Thomas pointed out the large text that said '北京' (Beijing) before helping me buy an actual Shanghai subway pass. The old TV tower got a new lease on life as the host of the hourly laser show. We had dinner at 代官山 , one of Thomas' favorite restaurants at Super Brand Mall. Very few parts of dinner were things I recognized, but everything was tasty. One of the oddest bits was the drinks, which were some sort of Coca-Cola and citrus concoction with tiny little citrus fruits served in glass bottles heavy enough to kill someone. As we were leaving the mall, the Oriental Pearl TV Tower lit up with a laser light show. Green laserbeams started hitting nearby buildings and giant laser-projected horses stampeded across the tower's base. Some of the local cafe chains have made fascinating branding choices. We made plans to meet up Wednesday evening at XinCheJian , the local hackerspace. From there, I headed home and passed out until morning. Consumerism! Saturday, I set off to find the Beijing Street electronic components market Thomas had recommended to me. It was fairly near Nanjing Road, so I hopped on the subway and popped up in front of the Sony Store and a gigantic Forever 21. Across the street was the first block of the Nanjing Road pedestrian mall. As soon as I set foot on the pedestrian mall, the touts hit. "Hey Mister. You want a watch?" "No." "You want a handbag?" "No." "Massage?" "No." "Lady massage? Very sexy girls." "No." And it didn't let up. From there on in, if I was on Nanjing Road, a tout was trying to sell me a Rolex, a designer handbag or a happy-ending massage. Some of the touts were men. Some were women. All were reasonably young. Some were more aggressive about it than others. Some only got in a single question as I walked past. Others followed me for half a block. That's the last I'll mention of the touts. Just like home! I walked down Nanjing Road for a couple blocks -- past a mobbed Apple Store, a gourmet grocery store, Gucci and a bunch of other high-end western shops. Guided by Google Maps, I took a right toward Beijing Road. Things quickly became more chaotic. Sidewalks and traffic lights became more...advisory than anything else. The side street was lined with small local shops, restaurants and...sort of ramshackle holes where there should be more shops. Seconds before, this shop window had been shilling for DeWalt As I hit Beijing Street, things changed again. Apparently that section of Beijing Street is known as 'Hardware street.' On the corner as I walked up was a sort of micromall of power tools, hand tools and gas generators. Some of the stuff there was from Chinese brands I'd never heard of like Dongcheng, but there was just as much stuff (and advertising) from DeWalt, Craftsman and Milwaukee. Plumbing supplies on Beijing Street Perhaps I could interest you in some industrial springs in a range of festive colors? Walking down Beijing Street, there were whole stretches of shops that sold nothing but magnets or bearings, tubing, connectors or brushes. Across the street, I found the 7 story "Technology Jingcheng Electron Market" . Every kiosk also sold a range of diodes, capacitors, oscillators and so on, but they weren't nearly as photogenic. See. Told you so. I started by wandering in the front door. A few dozen kiosks filled almost all available floor space. The kiosks had demos of the various LEDs they had for sale. They also appeared to sell everything else. Under glass various kiosks had piles of different sorts of switches, diodes, ICs, power adaptors, LCDs and a variety of other parts. Some of the kiosks were filled with unstable stacks of partial reels of surface-mount components. And kids. Kids everwhere. It was Saturday, so everyone just brought their babies, toddlers and 10 year-olds to hang out. Every kiosk had one display case on wheels that served as a door..of sorts. Heading downstairs into the basement, I found more of the same, but also a little more work being done. A few shopkeepers had customers laptops open and were attacking their motherboards with soldering irons. Things in the basement were generally a bit better organized than on the first floor. If you need custom faceplates for your milking machines, this is the place to go. The second floor was...probably about 50% bigger than the first floor and connected to the next building over. As I was doing the tour of shops that sold nothing but spools of surface-mount microcontrollers (and there were probably about 20 of them), women with small sheafs of paper listing the parts their clients needed would dart in an out of various shops placing or picking up orders. At some point, a guy on a powered self-balancing unicycle zoomed past me. I wouldn't realize it was odd until days later, but not a single person on any of the 5 occupied floors of the component market said a single word to me without me trying to start a conversation first. And I only did that twice. I seriously considered trying to bring one of these soldering station microscopes home in my suitcase. I make keyboards . I hadn't really thought about buying keyboard parts on this trip. Had I planned ahead, I could have gotten someone at the electronics market to design me a PCB for my next model. As I was walking around, I kept an eye on the keyswitches that were being offered for sale, on the off chance that someone had a good deal on the switches I use (or interesting alternatives). Somewhere on the third floor, I finally found someone selling Cherry keyswitches. The vendor didn't speak any English (and, to a first approximation, I speak no Chinese.) Using Google Translate, I explained that I wanted to know how much 200 of those keyswitches would cost. One of the two folks behind the counter picks up the switch I wanted and ran off. About 10 minutes later, he turned up again and wrote down a price...which was easily twice what they should cost. I wrote down what I wanted to pay. He shook his head, made an X with his arms and turned away from me. As I walked away, he was taking cameraphone pictures of the keyswitch. Very, very few of the vendors had posted price lists like this one. There were three of these shops in a row The higher floors of the central market held more and more 'finished' goods. The shops in the secondary building tended to sell only a single sort of thing. There were bubblewrap shops. There were X86 CPU shops. There were packaging shops. There were shops that only made faceplates. There were cabling shops. You get the idea. I got all the way to the top of the market without finding another vendor selling keyswitches. There had to be one -- the merchant with the high price really clearly hadn't left the building when he'd run off to get me a price. But it was lunch time and I was a little burned out on electronic components. If I'd been planning ahead, I probably could have gotten some keyboard PCBs made while I waited. As I was walking across the second or third floor to get to the escalator, I noticed a tiny, tiny little kiosk (maybe 3 feet square) that had some keycaps on their "what we sell" board. Looking closer, they had an awful photocopy of the data sheet for Cherry keyswitches taped to the front of their display case. Getting into a conversation with the seller, it turned out that she had a pretty reasonable selection of Cherry keyswitches and keycaps. Her pricing for keyswitches was among the best I've found anywhere, though I know she was still making a decent profit. Her pricing on keycaps was astonishingly good for what she was selling. So I can find it later, her email is [email protected] and her phone is 021-53083556. The website on her business card doesn't exist. I walked out about $60 poorer, but 200 Cherry keyswitches and about 700 keycaps richer. Over the course of the morning, I became a big fan of the Beijing-lu Electronic components market. It was time for lunch.

0 views