HNHacker News
TopNewBestAskShowJobs

cxam

64 karma · joined July 4, 2015

submissionscomments
cxam··on Show HN: Take timestamped notes while watching YouTube videos
This has a nice UI, well done on launching! I made something similar but never really thought of monitising it. The focus was on the tagging/annotating for power users with keyboard shortcuts: https://tagx.io
cxam··on I couldn't buy a car because my email address was 'invalid'
I've had to locally override some JS on the client-side and hoped their backend validation was a lot more sane. The frontend validation logic was limiting the TLD to minimum of two characters and max of four ({2,4}). I use a .email TLD for sites that I don't want to give my personal email.

If you're using Chrome (65+), you can easily bypass any validations/logic by using local overrides (https://developers.google.com/web/updates/2018/01/devtools#o...). As marcolussetti said, it's worth trying out.

cxam··on ZSH Aliases
If you're working with Python projects and Virtualenv then this is a great alias to have (assuming you call it venv):

  alias venv=". venv/bin/activate"
Just cd to a project root and venv :)
cxam··on Ask HN: What startup/technology is on your 'to watch' list?
If you're comparing this to a normal DB, the biggest worry should be that it's not ACID compliant. Definitely something to consider if your data is important. The limitations for KV is listed here: https://developers.cloudflare.com/workers/about/limits#kv

You should also consider how you intend to backup the data as there currently isn't a process to do that outside of writing something yourself to periodically download the keys. This will add to your usage cost depending on what your strategy is, for example, backing up old keys that gets updated vs only new keys by keeping track of the cursor.

cxam··on Ask HN: What startup/technology is on your 'to watch' list?
If by application database you mean to the level of an RDBMS then no. It's a key-value data store. You get your CRUD operations, expiry, key listing and the ability to do pagination with keys always returning in lexicographically sorted order. Any relation data you want to have would be using the key prefixes, e.g.:

  article:1 -> {"user": 1, "content": "..."}
  user:1 -> {"name": "username"}
  user:1:articles -> [1, ...]
cxam··on Show HN: Plopdown – HTML5 Video Annotator
> That said, I know how I'd manage multiple projects via NX, and knew the rules to effectively maintain this project for the foreseeable future.

I believe NX is aiming to bring in Vue support through their plugin system, but yea, I understand that it would make it easier in your case since it already supports Angular. If you like the monorepo setup and looking for a more generic solution then checkout lerna (https://github.com/lerna/lerna).

> I really do love Vue, but I need structure, because as a human I have terrible memory. I don't love unit testing, and I barely love integration testing, so strict typing and good naming is key to my style of coding.

Vue, as simple as it is, can have structure and easily adopt to large scale projects. As I mentioned in my previous comment, you would have not had any issues using TypeScript with it.

> I hit a wall with Vue, which I've similarly hit with AngularJS, at some point I hit a level of complexity that Angular doesn't allow, but Vue does.

What exact issues did you have with Vue? Just curious as nothing you've mentioned so far are actual issues, but rather, you having better experience with using Angular.

cxam··on Show HN: Plopdown – HTML5 Video Annotator
This is great! I've always been interested in video related products and services and you've done a pretty good job on getting the annotations overlay the video.

> I switched away from Vue as soon as I hit my first refactor. I struggled to rebuild big parts of the application because Vue allowed me to do everything and nothing. I know I probably could have done this in React or continued with Vue, but because of the following reasons I decided against that

Funnily enough, I went through a similar thought process but between React and Vue. What's uncanny is that it was also for a video annotation service I was building (https://tagx.io/). I ended up going with Vue and like Plopdown, used Plyr (https://plyr.io/) as the video player (also a great project). Your three reasons for not continuing to use Vue, I'm wondering if that's really because Angular was your comfort zone?

  [1] Typescript + Vue works well (that's how I built mine). 
  [2] You could have used RxJS with Vue. 
  [3] Vue has less boilerplate code than Angular and wouldn't have made this project any more difficult to maintain
cxam··on Show HN: Plopdown – HTML5 Video Annotator
I built something similar that might work depending on your use case and doesn't require installing an extension. Check out https://tagx.io/

However, it doesn't overlay any annotations over the video like plopdown does (which is a great feature!), only on the side of the video.

cxam··on Ask HN: What startup/technology is on your 'to watch' list?
Caddy, specifically v2 (https://caddyserver.com/v2)

I've been using Caddy v2 all through beta/RC and glad it's finally stable with a proper release. I moved away from using nginx for serving static content for my side projects and prototypes. I'm also starting to replace reverse proxying from HAProxy as well. The lightweight config and the automated TLS with Let's Encrypt makes everything a breeze. Definitely has become part of my day-to-day.

cxam··on Ask HN: What startup/technology is on your 'to watch' list?
Cloudflare Workers and their KV service (https://www.cloudflare.com/products/workers-kv/) is great. I built a side project (https://tagx.io/) completely on their services from hosting the static site, auth flow and application data storage. KV is pretty cheap as well starting around $5/month with reasonable resources.
cxam··on Show HN: Tagx.io – Create/share video highlights and annotations
It did cross my mind when I released it. I'd like to refactor the code and bring in more tests to make it "contributor friendly" first. Feedback has been great so far and I'll be implementing some of the features on the back of that. There is a repo (https://github.com/cxam/tagx.io) already that I'm using for issue tracking and I'll be able to push the code there when it's ready.
cxam··on Show HN: Tagx.io – Create/share video highlights and annotations
Great, I think this is something I'd like to bake into the next release.
cxam··on Show HN: Tagx.io – Create/share video highlights and annotations
Great, glad this worked well for you. I agree with your point on the visual feedback. Depending on which tab you have active, it will always show the newly created tag on the list when created. However, maybe a short-lived toast message could work better here.

You're correct, the hotkeys won't create a tag when the video is paused, instead it will start playing the video on first press then you'd need to press it again to actually creat the tag. If you want to manually create tags without playing the video then this can be done on the tracks interface. The "+" button in each track will display the modal to do so.

With simplified sharing, would you expect to show only the video without any of the tags and tracks on display? There are existing layout options you can customise such as hiding the tag/track listing and the tagging controls, even resizing the video. However, the play button just plays the video as normal. I think what you're suggesting with the play button only playing the tracks when shared in "simplified mode" would provide a cleaner interface to the end user without the additional components displayed.

Thanks again for the feedback, if you do have any other ideas and this post gets locked for commenting after two weeks, then please don't hesitate to create an issue or drop me an email as listed here: https://tagx.io/support/general/contact

cxam··on Show HN: Tagx.io – Create/share video highlights and annotations
Thanks for the feedback pknight. I'll address the points as follow:

(1) While watching it would be great to press a button to generate timestamps

This is already possible using hotkeys and documentation for it can be found here: https://tagx.io/support/advanced/hotkeys

(2) then compose tracks by selecting any two timestamps, with the ability to add tags to timestamps or tracks while the video is still playing or after

Just to clarify, do you mean the ability to add the current point in time of the video to different tracks? In which case, this is already possible using multiple hotkeys as outlined above. Please let me know if this is not what you meant.

(3) with the link just playing between timestamp a and timestamp b

You are able to create a loop between a tag or a set of tags, please see loop settings outlined here: https://tagx.io/support/interfaces/video

With regards to autoplay, this is a bit finicky depending on the browser and is usually not recommended due to the negative user experience so I didn't include an option to enable this feature.

Hope this is clear, let me know if you have any more questions.

cxam··on Show HN: Tagx.io – Create/share video highlights and annotations
These are pretty good use cases, thanks! I hadn't thought of it in a political context, I can definitely see it work there considering the lengthy footage.
cxam··on Show HN: Tagx.io – Create/share video highlights and annotations
Yea, that's always the issue. An extension would be ideal for desktop users and was considering that as a feature, however, for this initial release, I didn't want to alienate any mobile users that may not have the ability to install an extension. Appreciate your feedback and glad someone has the same idea, definitely makes it easier to prioritise features going forward.
cxam··on Show HN: Tagx.io – Create/share video highlights and annotations
This is the same tagged video I shared in my previous post but without the need for any server-side requests and you can amend yourself: https://tagx.io/video/youtube/7-31KgImGgU/55:52-1:03:30@name...
cxam··on Show HN: Tagx.io – Create/share video highlights and annotations
The idea behind TAGX.io was to make it easier to share highlights of our football (soccer) video recordings. We have been recording and uploading our games to YouTube over the years and almost everyone that played watched it to see how well they/their team performed. It became an additional discussion point days after the game until the next one. However, it does become tedious having to sit through another hour until you find something special you want to share and discuss, usually this is in the form of “check out the goal 23 minutes in”. I built TAGX to ease this process where someone would go through the video, tag the interesting parts and share it with the group. It was almost like a highlight reel, allowing you to skip through the tagged parts.

This was my winter holiday side project last year and I figured there would be a wider application of this service (conference talks, tutorials, lengthy videos in general) so I decided to polish it up and make it available as a service for others to use. You don’t need to create any account to use it, it’s all client-side and built using Vue.js. It’s hosted on Cloudflare Workers Sites. I wanted to try out Cloudflare Workers/KV, so I ended up building a link shorting feature including authentication/authorisation flow. You can read more about the stack in support -> technology (https://tagx.io/support/general/technology) section.

Here is a tagged video of the AWS re:Invent 2019 event which I shared with someone recently that highlighted some announcements that were of interest to us: https://tagx.io/video/id/Nw-wisbyZPu0LCBk9Tzbn

Following are some development stats for those interested:

- Client-side: ~80 hours (15th Dec 2019 – 7th Jan 2020)

- Server-side: ~30 hours (19th Jan 2019 – 24th Jan 2020)

- Node Experience: 5+ years

- Vue.js Experience: 2+ years

Hope someone finds it useful and any feedback is much appreciated!

cxam··on DropIt – A file uploader built with Node.js
I built something similar that would make the deletion process seamless. The uploaded files are stored in memory and never hit the disk. They then get automatically deleted when the user leaves the site.

Let me know what you think: https://tempd.link/

cxam··on Show HN: Skipvid.com – Easily create and share auto skipping video links
I built this to make it easier to link users to certain parts of YouTube videos and have it auto skip each part without having to give timestamps. Hopefully others will find it useful.

Any bugs or feedback, please create an issue here: https://github.com/cxam/skipvid.com

cxam··on Ask HN: Side project you're working on?
https://passed.pw/ - Mobile-friendly random password generator seeded based on your mouse or touch positions for better randomness.

Just wanted something simple to generate passwords/tokens and ended up building this two years ago.

https://tempd.link/ - Temporary file hosting with immediate automatic deletion when leaving the site.

This was just a weekend project to test out openresty and using redis as an in-memory storage location for uploaded data that will get destroyed without writing to disk. Would be very expensive to scale something like this though.

cxam··on Show HN: Passed.pw – Random password generator seeded by mouse or touch motions
Thanks for the feedback and link, much appreciated. Since the application is fully client-side, anyone could download the site and run it locally without any issues. Maybe making this more apparent by providing a download link (similar to Bitcoin paper wallet) is a good idea.

I have a GitHub project (https://github.com/cxam/passed.pw) open at the moment to track issues and plan to make this open source soon after fixing any bugs found during the initial trials.

All the libraries used in this project are open source and I have listed these on the about page with the relevant links.

cxam··on Show HN: Diff Collection Game
The issue is that your jQuery library is loaded over http and fails since it's a different protocol from the main site. More info regarding this here: https://developer.mozilla.org/en-US/docs/Security/MixedConte...

To fix, simply change http://cdnjs to //cdnjs to make your request protocol independent.

cxam··on Show HN: Passed.pw – Random password generator seeded by mouse or touch motions
Thanks.

I agree that a web-based password generator is not ideal and have mentioned this in the about page. This is mostly due to Math.random() being pseudorandom. However, the application does try to be a bit better than some of the services currently out there by seeding Math.random() and using window.crypto.getRandomValues() to generate cryptographically random values where available.

Also, it goes without saying but the passwords are generated on the client as all similar services should.