Notes.ericjiang.com is a subdomain of Ericjiang.com, which was created on 2009-08-24,making it 15 years ago.
Description:Sep 21 2011  · Eric Jiang Creator of Fabrica - build data-driven web apps without coding Former CTOCo-founder of DoubleMap acquired in 2019...
Discover notes.ericjiang.com website stats, rating, details and status online.Use our online tools to find owner and admin contact info. Find out where is server located.Read and write reviews or vote to improve it ranking. Check alliedvsaxis duplicates with related css, domain relations, most used words, social networks references. Go to regular site
HomePage size: 34.934 KB |
Page Load Time: 0.354593 Seconds |
Website IP Address: 104.28.10.109 |
Eric Bowers Photo Blog - Eric Bowers Photoblog blog.ericbowersphoto.com |
GetSpool 2024 - Jailbreak Tweaks, iOS News - GetSpool features iOS Jailbreak, Cydia Apps, Theme Revi blog.getspool.com |
Notes | BRpaper – Notes PTU PSBTE notes.brpaper.com |
Becky's SharePoint Journey – Notes, great finds, and more about SharePoint solutions, JavaScript, Re sharepoint-blog.epictrends.com |
ArcGIS Maps SDK for JavaScript | Overview | ArcGIS Maps SDK for JavaScript 4.29 | ArcGIS Developers js.arcgis.com |
Alyssa Coghlan’s Python Notes — Alyssa Coghlan's Python Notes 1.0 documentation python-notes.curiousefficiency.org |
Notes from Ensemble Video - News, Notes and Tips from Ensemble Video notes.ensemblevideo.com |
Jailbreak iOS 15 - iOS 15.2 Updates | Best Tech Info jailbreakpangu.jailbreakandhacks.com |
JavaScript – JavaScript Questions javascript.tutorialink.com |
Lessonplans/Notes – Get All Lesson Plans, Lesson Notes, Scheme of work, Examination Questions and Ot lessonplan.edudelight.com |
Sciter Notes – Take your notes… back home. notes.sciter.com |
Field Notes by CampSaver.com – Field Notes fieldnotes.campsaver.com |
Welcome to APPSC Notes - Andhra Pradesh PCS Exam Notes andhrapradesh.pscnotes.com |
A look back at the Argus C44 rangefinder camera - Notes https://notes.ericjiang.com/posts/1265 |
Notes https://notes.ericjiang.com/ |
Dual-booting Windows and Leopard with Kalyway - Notes https://notes.ericjiang.com/posts/43 |
Don't buy from Musicnotes.com | Notes - Eric Jiang https://notes.ericjiang.com/posts/49 |
Considering a Computer Science major? Read this first - Notes https://notes.ericjiang.com/posts/679 |
"EISA Configuration" partition won't go away - Notes https://notes.ericjiang.com/posts/52 |
Convert video with subtitles to MP4 for iPhone/iPad ... - Notes https://notes.ericjiang.com/posts/277 |
Arrow Endianness: How GNOME got sorting backwards - Notes https://notes.ericjiang.com/posts/456 |
HP dv6605 dv6000 XP drivers - Notes https://notes.ericjiang.com/posts/39 |
Personal notes | Notes - Eric Jiang https://notes.ericjiang.com/posts/category/personal-notes |
100% Unbreakable Encryption is Achievable! | Notes https://notes.ericjiang.com/posts/1051 |
Hardware | Notes - Eric Jiang https://notes.ericjiang.com/posts/category/hardware |
Optimizing Python With Cython | Notes - Eric Jiang https://notes.ericjiang.com/posts/1140 |
Graphics | Notes https://notes.ericjiang.com/posts/category/graphics |
Learning Chinese (well enough to order from the menu) using MTurk https://notes.ericjiang.com/posts/1317 |
Date: Mon, 14 Dec 2020 04:35:43 GMT |
Content-Type: text/html; charset=UTF-8 |
Transfer-Encoding: chunked |
Connection: keep-alive |
Set-Cookie: __cfduid=dd384b2c4ec600411247a38e8455ff5181607920541; expires=Wed, 13-Jan-21 04:35:41 GMT; path=/; domain=.ericjiang.com; HttpOnly; SameSite=Lax; Secure |
Link: https://notes.ericjiang.com/wp-json/; rel="https://api.w.org/" |
Vary: Accept-Encoding |
Via: e4s |
CF-Cache-Status: DYNAMIC |
cf-request-id: 07012178770000e744d895f000000001 |
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" |
Report-To: "endpoints":["url":"https:\\/\\/a.nel.cloudflare.com\\/report?s=%2FRVBIbt4T3hPkwXv607wSXIda50oNXLKD%2BGZY%2FyZRPPL0SWbiRHLxggv7IAyb8rUZgmhnBeU9fNq%2B4v3IBK0txUvafLjsNBn2P4nFyRlwrqcrZsebm24ZooTKbum5tFP"],"group":"cf-nel","max_age":604800 |
NEL: "report_to":"cf-nel","max_age":604800 |
Server: cloudflare |
CF-RAY: 6015383a59b6e744-EWR |
Content-Encoding: gzip |
Ip Country: Guam |
Latitude: 13.4786 |
Longitude: 144.8183 |
Customize Huion tablet buttons on Linux Tuesday, 3 November 2020 The Huion Kamvas Pro (2019)” comes with 16 physical buttons and two touch strips along the sides of the tablet. On Windows, you can configure the buttons to send custom keystrokes (e.g. toggling painting tools or changing brush size). However, the key mapping is mirrored from the left to the right side, so you can only have 10 distinct assignments. On Linux, the pen works out-of-the-box on my Ubuntu machines, but there’s no good way to customize the buttons. You can force X to use the wacom drivers ( xf86-input-wacom ) which lets you use xsetwacom to customize some of the buttons, but the touch strips don’t seem to be supported, nor do buttons 13 through 16 (the bottom right buttons). I have published a Python program that watches the raw data coming from the tablet and sends commands using xdotool . It currently has a few rough edges: setting it up requires a bit of compilation in order to link to libxdo, and you also need to have permission to read from the /dev/hidraw device which you don’t have by default. For the permissions, I’m sure someone more knowledgeable can suggest a better way to set things up, but you can run the program as root or a setuid program, or manually grant read access on the /dev/hidraw file. Configuring it should be pretty easy. Here are some buttons that I have configured for use with Krita, for example: (more…) Posted in Hardware , Linux | No Comments » Using TypeScript to check for missing cases Tuesday, 11 August 2020 TL;DR: use your type system to keep you from forgetting to handle all cases in switch statements and object keys. Often in programming, you have to deal with a list of distinct options. In some languages, this would be expressed by an enum, but in TypeScript it’s more common to express them as specific strings: type CarType = mazda-miata” | honda-s2000” | toyota-mr2” | pontiac-solstice”; (Let’s say we’re building a racing game featuring old roadsters in this contrived example…) Rather than enumerate all of the types in one CarType declaration, we might have varying properties for each car, expressed as TypeScript discriminated unions: (more…) Posted in Programming | No Comments » Who was Herman Wasserman? Saturday, 27 June 2020 Probably relatively well-known in music circles in his day, Herman Wasserman seems to only pop up today in conversation associated with George Gershwin. It seems like he was also a teacher to Ferde Grofé, who orchestrated Gershwin’s Rhapsody in Blue. If you search library catalogs, he turns up as having edited George Gershwin’s Song-Book as well as having arranged a simplified piano solo version of Rhapsody in Blue . In the foreword of that version of Rhapsody in Blue, it claims: (more…) Posted in History | No Comments » QListView not accepting drag and drop Tuesday, 23 June 2020 Python + Qt (in the form of PyQt5 or PySide2) is a weird mash-up of the famously slow interpreted dynamic language plus a heavyweight C++ GUI library. It certainly has its advantages over writing in C++, but I’m really wondering if there aren’t better ways to write cross-platform desktop apps. Anyways, in Qt, you’re supposed to be able to accept drag-and-drop in a widget by doing something like: myWidget.setAcceptDrops(True) # install some event handlers myWidget.dragMoveEvent = ... myWidget.dropEvent = ... If you use a QListView to present an explorer-style view of some items, this mysteriously doesn’t work. Why? Qt is object-oriented from top to bottom, and you think you’re using a QListView but it’s actually a QAbstractItemView which is actually a QAbstractScrollArea. But a QAbstractScrollArea is very different conceptually from a QListView. It turns out that when you drop something onto the QListView, it’s not the QListView that gets the drop events. Instead, its internal viewport (the scroll area) gets the event. And if you’ve setAcceptDrops(True) on myWidget , that’s not what you actually want. The viewport is its own QWidget with its own acceptDrops flag that isn’t True . class MyWidget(QListView): def __init__(self): ... # NOT self.setAcceptDrops(True) self.viewport().setAcceptDrops(True) self.viewport().installEventFilter(self) def eventFilter(self, obj, event): # grab any drag and drop events that the viewport receives... Is this a bug? It certainly seems like poor API design, because if doing a setAcceptDrops(True) on a QListView doesn’t also setAcceptDrops(True) on its internal viewport, then what does it accomplish? Technically, this behavior seems to be mentioned in this old Qt 4.6 page: https://doc.qt.io/archives/4.6/model-view-dnd.html But this kind of requirement that I cobble together bits and pieces of Qt 4, C++, PyQt*, and StackOverflow documentation to figure out what to do in PySide2 is apparently the state of using Qt with Python. Excuse me while I go back to complaining about JavaScript… Posted in Programming | No Comments » Fixing only left/right channels working on Logitech headsets Friday, 12 June 2020 I have a Logitech G430 headset. It’s one of a series of Logitech headsets that offer fake surround sound as a marketing ploy. (I will write up something someday about why surround sound headphones are 95% marketing B.S.) Using it on Windows, at some point all audio from channels other than left and right disappeared. I.e. 6 of the 8 channels were just completely inaudible. Toggling the surround sound effect in Logitech Gaming Software didn’t work. I looked around and there were similar complaints from people with other Logitech headsets. Here’s what did work, and how to test it: (more…) Posted in Hardware , Windows | No Comments » 100% Unbreakable Encryption is Achievable! Sunday, 3 May 2020 There were two common cryptography misconceptions that we unlearned in school, and this post is about the first one we learned about. (And Cryptonomicon helped with this one too.) We hear a lot about how strong” encryption is. That our files would take bazillion years to decrypt via brute force or that our Bitcoin account would take the fastest supercomputer a gajillion years to break into. But what about an encryption scheme that an adversary could never, ever brute force? Sounds pretty useful, doesn’t it? You may be surprised to learn that yes, we can do it! And we’ve been doing perfectly unbreakable encryption in the military since before WWII. Let’s say we have a plain-text message: A T T A C K A T O N E O C L O C K And we encrypted it with a random key that’s the same length as the message, where each character of the key is just added to the corresponding plain-text letter of the English alphabet (A = 0, so B + C = D, Y + B = Z and so on…). (more…) Posted in Programming , Security | No Comments » Reverse-Engineered Dumpling Sauce Recipe Wednesday, 1 April 2020 This was reverse-engineered from Wei-Chuan brand dumpling sauce. It’s not an exact replica but should provide a similar taste profile. Makes approximately 200 mL. Ingredients (more…) Posted in Food | No Comments » `git add -p` has made me a better programmer Wednesday, 5 February 2020 If you don’t know about this already, then file it under your collection of One Simple Trick articles”… git add -p (AKA git add patch ) will interactively show you each change in your repo and ask you if you want to stage it. Do you ever use git commit all ? Have you ever accidentally committed more than you meant to? By using git add -p , you get a chance to review each change. That helps you catch mistakes, like leaving in debugging printlns that you don’t need anymore, or other temporary hacks. Since git add -p will present each change separately, you can even include some changes and exclude others within the same file. And, it’s not uncommon for me to fix small, unrelated issues while working on a major feature. I’d like for those fixes to go into a separate commit, and git add -p gives me a chance to catch those fixes if I haven’t committed them already. The other...
Domain Name: ERICJIANG.COM Registry Domain ID: 1566633854_DOMAIN_COM-VRSN Registrar WHOIS Server: whois.namecheap.com Registrar URL: http://www.namecheap.com Updated Date: 2023-07-25T07:37:36Z Creation Date: 2009-08-24T00:09:54Z Registry Expiry Date: 2024-08-24T00:09:54Z Registrar: NameCheap, Inc. Registrar IANA ID: 1068 Registrar Abuse Contact Email: abuse@namecheap.com Registrar Abuse Contact Phone: +1.6613102107 Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited Name Server: DNS1.REGISTRAR-SERVERS.COM Name Server: DNS2.REGISTRAR-SERVERS.COM DNSSEC: unsigned >>> Last update of whois database: 2024-05-17T21:06:49Z <<<