profile
viewpoint
Mahdi Bchatnia inket Tokyo, Japan / Bay Area, CA https://mahdi.jp

inket/MacSymbolicator 167

Symbolicating macOS/iOS crash reports, easily.

inket/cosyTabs 46

SIMBL plug-in for Safari. Now with macOS Sierra/Safari 10 support. Small tabs like they used to be back in the day.

inket/CustomNC 39

Personalise your Notification Center banners and alerts. Requires SIMBL/EasySIMBL. (Sierra unsupported)

inket/dominosjp 12

🍕Domino's Pizza Japan CLI 🍕

inket/Autoclick 10

A simple Mac app that simulates mouse clicks when needed.

inket/alfred2-currencyconverter 9

A simple Alfred 2 Currency Converter workflow

inket/GlobalNoWindowTitle 9

SIMBL plug-in. Hides window titles+icons.

inket/Dim 6

Mac app for multi-monitor users. Automatically dims secondary screen if a video is fullscreen.

inket/GlobalNoWindowIcon 6

SIMBL plug-in. Hides window icons on (almost) all apps.

startedcfilipov/TextTable

started time in 6 days

startedcfilipov/mujilabel

started time in 6 days

startedbosefirmware/ced

started time in 7 days

created taginket/stts

tagv1.18

A simple macOS app for monitoring the status of cloud services

created time in 22 days

push eventinket/stts

Mahdi Bchetnia

commit sha 16552565d9036dd9cb515a797e3863668a05a786

Updated generated services: Google Cloud Secret Manager renamed to Google Secret Manager

view details

Mahdi Bchetnia

commit sha addcefb2214dadf7210d9b4cf0a23c515d92f045

Added service: Confluent Cloud, closes #102

view details

Mahdi Bchetnia

commit sha 5494aa8d871bcc8c19114b286a8838e922942b58

Bump version to 1.18 (43)

view details

push time in 22 days

issue closedinket/stts

Confluent Cloud (kafka)

Sorry, I'm not a developer really, but I do love this.

https://status.confluent.cloud/ would be great for me (and probably lots of other people!)

closed time in 22 days

SpokeyWheeler

issue commentinket/stts

More granular monitoring of AWS / Azure / whatever

The issue here is how to represent all services and geographies in the UI. If I simply add them all to the main list it would become too long and impossible to scroll.

The other option is to update the UI to support submenus for each service, so you would click "Amazon Web Services" and it would give you all the options. For that it's no quick-and-easy task so it'll have to wait a bit.

SpokeyWheeler

comment created time in 22 days

startedconnor/npr

started time in 22 days

startedmatryer/bitbar

started time in 24 days

push eventinket/Transmog

Mahdi Bchetnia

commit sha 72069d89a7a97342404199a92b144e3558deac55

Print values when converting This required adding a model for xcode theme colors to handle conversion from different formats gracefully

view details

Mahdi Bchetnia

commit sha 0e604fc36fd7c8cd33f599c173e8ebf6e2738438

Better color matching rules

view details

push time in 24 days

created taginket/Transmog

tag0.0.4

A command-line tool for converting VSCode themes into Xcode themes 🎨🛠

created time in 24 days

issue commentinket/MacSymbolicator

Initial setup fails

Hi! Thank you for reporting this. I just tried it and it built fine. I am using the same carthage version.

What's your Xcode/OS version? I used Xcode 11.4.1 (the latest)

perryclarke

comment created time in a month

push eventinket/stts

Mahdi Bchetnia

commit sha 6156493884c43ca3b266ddb7e960922a1c337395

Refactored Heroku to get rid of warnings about compiler taking too long

view details

Mahdi Bchetnia

commit sha c677b5ac7a714f559c2e8e4a7eb6fbcfddc12a70

Fixed service: Authorize.Net

view details

Mahdi Bchetnia

commit sha 7c725428498345952a1cc40e292a206242dd1434

Bump version to 1.17 (42)

view details

push time in a month

created taginket/stts

tagv1.17

A simple macOS app for monitoring the status of cloud services

created time in a month

issue closedinket/stts

Unexpected Error Google Cloud Infrastructure

Screenshot 2020-04-25 at 20 05 17

About a few days ago, data collection broke from Google cloud infrastructure.

closed time in a month

arslanbekov

push eventinket/stts

Mahdi Bchetnia

commit sha 99ff28f90e4b767909a1673bf3dceb2ffc3950e6

Added Box.swift/Egnyte.swift to project

view details

Mahdi Bchetnia

commit sha c8ed70412dbf8ada33860dbc273be2bf2799db33

Updated dependencies

view details

Mahdi Bchetnia

commit sha 32e571908e987e2f81fd2387c64391621827bbbc

Fixed service Gandi.net

view details

Mahdi Bchetnia

commit sha a068075627b67e29f8f6731e8318848e103ce0cf

Added generated service: Google Cloud Secret Manager

view details

Mahdi Bchetnia

commit sha ce1005478c6440d0aebc1b14151c433d6b9f5c06

Fixed generated service: Google Cloud Infrastructure Components, closes #101

view details

push time in a month

issue commentinket/stts

Unexpected Error Google Cloud Infrastructure

Thanks for reporting it!

arslanbekov

comment created time in a month

push eventinket/stts

Brandon Bianchi

commit sha 21963ae675b3e2d75eb0b0cc3ebaafd7a43ee8f8

Added status checker for Box

view details

Brandon Bianchi

commit sha f26021fb38eaaa894b20862ca987228ebf3875e8

Update Box.swift

view details

Mahdi Bchatnia

commit sha 448971b6cc5a3cf955268ce0b4cf8ab4c057b756

Merge pull request #100 from 59psi/add-box Add box status

view details

push time in a month

PR merged inket/stts

Add box status

Adding a status option for Box as well.

+11 -0

0 comment

1 changed file

59psi

pr closed time in a month

push eventinket/stts

Brandon Bianchi

commit sha e175bd14ff7a3e170d3b584086824dfb5705820f

Adding the status page checker for Egnyte from statuspage.io

view details

Mahdi Bchatnia

commit sha 3d7a551f9c9fb8eccb9719f768effcfb40eeadfe

Merge pull request #99 from 59psi/add-egnyte Adding the status page checker for Egnyte from statuspage.io

view details

push time in a month

PR merged inket/stts

Adding the status page checker for Egnyte from statuspage.io

Per your documentation I believe this is the appropriate way to add new services for display. Please review and if acceptable approve my pull request.

+11 -0

0 comment

1 changed file

59psi

pr closed time in a month

startedbloomberg/xcdiff

started time in a month

startedinket/Transmog

started time in a month

PublicEvent

startedinket/Autoclick

started time in a month

startedairbnb/ResilientDecoding

started time in 2 months

startedcarson-katri/swift-request

started time in 2 months

startedmaxgoedjen/secretive

started time in 2 months

pull request commentthii/SwiftHEXColors

Added support for 8-digit and 4-digit hex colors

🤣 thanks!

inket

comment created time in 2 months

Pull request review commentthii/SwiftHEXColors

Added support for 8-digit and 4-digit hex colors

 private extension Int {  /// An extension of UIColor (on iOS) or NSColor (on OSX) providing HEX color handling. public extension SWColor {-    /**-     Create non-autoreleased color with in the given hex string. Alpha will be set as 1 by default.--     - parameter hexString: The hex string, with or without the hash character.-     - returns: A color with the given hex string.-     */-    convenience init?(hexString: String) {-        self.init(hexString: hexString, alpha: 1.0)-    }-     private convenience init?(hex3: Int, alpha: Float) {         self.init(red:   CGFloat( ((hex3 & 0xF00) >> 8).duplicate4bits() ) / 255.0,                   green: CGFloat( ((hex3 & 0x0F0) >> 4).duplicate4bits() ) / 255.0,                   blue:  CGFloat( ((hex3 & 0x00F) >> 0).duplicate4bits() ) / 255.0,                   alpha: CGFloat(alpha))     } +    private convenience init?(hex4: Int, alpha: Float?) {+        self.init(red:   CGFloat( ((hex4 & 0xF000) >> 12).duplicate4bits() ) / 255.0,+                  green: CGFloat( ((hex4 & 0x0F00) >> 8).duplicate4bits() ) / 255.0,+                  blue:  CGFloat( ((hex4 & 0x00F0) >> 4).duplicate4bits() ) / 255.0,+                  alpha: alpha.map(CGFloat.init) ?? CGFloat( ((hex4 & 0x000F) >> 0).duplicate4bits() ) / 255.0)

This fixes it, but it might overkill. What do you think?

diff --git a/Sources/SwiftHEXColors/SwiftHEXColors.swift b/Sources/SwiftHEXColors/SwiftHEXColors.swift
index 55f658d..44d5229 100644
--- a/Sources/SwiftHEXColors/SwiftHEXColors.swift
+++ b/Sources/SwiftHEXColors/SwiftHEXColors.swift
@@ -28,39 +28,39 @@
     typealias SWColor = NSColor
 #endif
 
-private extension Int {
-    func duplicate4bits() -> Int {
+private extension Int64 {
+    func duplicate4bits() -> Int64 {
         return (self << 4) + self
     }
 }
 
 /// An extension of UIColor (on iOS) or NSColor (on OSX) providing HEX color handling.
 public extension SWColor {
-    private convenience init?(hex3: Int, alpha: Float) {
+    private convenience init?(hex3: Int64, alpha: Float) {
         self.init(red:   CGFloat( ((hex3 & 0xF00) >> 8).duplicate4bits() ) / 255.0,
                   green: CGFloat( ((hex3 & 0x0F0) >> 4).duplicate4bits() ) / 255.0,
                   blue:  CGFloat( ((hex3 & 0x00F) >> 0).duplicate4bits() ) / 255.0,
                   alpha: CGFloat(alpha))
     }
 
-    private convenience init?(hex4: Int, alpha: Float?) {
+    private convenience init?(hex4: Int64, alpha: Float?) {
         self.init(red:   CGFloat( ((hex4 & 0xF000) >> 12).duplicate4bits() ) / 255.0,
                   green: CGFloat( ((hex4 & 0x0F00) >> 8).duplicate4bits() ) / 255.0,
                   blue:  CGFloat( ((hex4 & 0x00F0) >> 4).duplicate4bits() ) / 255.0,
-                  alpha: alpha.map(CGFloat.init) ?? CGFloat( ((hex4 & 0x000F) >> 0).duplicate4bits() ) / 255.0)
+                  alpha: alpha.map(CGFloat.init(_:)) ?? CGFloat( ((hex4 & 0x000F) >> 0).duplicate4bits() ) / 255.0)
     }
 
-    private convenience init?(hex6: Int, alpha: Float) {
+    private convenience init?(hex6: Int64, alpha: Float) {
         self.init(red:   CGFloat( (hex6 & 0xFF0000) >> 16 ) / 255.0,
                   green: CGFloat( (hex6 & 0x00FF00) >> 8 ) / 255.0,
                   blue:  CGFloat( (hex6 & 0x0000FF) >> 0 ) / 255.0, alpha: CGFloat(alpha))
     }
 
-    private convenience init?(hex8: Int, alpha: Float?) {
+    private convenience init?(hex8: Int64, alpha: Float?) {
         self.init(red:   CGFloat( (hex8 & 0xFF000000) >> 24 ) / 255.0,
                   green: CGFloat( (hex8 & 0x00FF0000) >> 16 ) / 255.0,
                   blue:  CGFloat( (hex8 & 0x0000FF00) >> 8 ) / 255.0,
-                  alpha: alpha.map(CGFloat.init) ?? CGFloat( (hex8 & 0x000000FF) >> 0 ) / 255.0)
+                  alpha: alpha.map(CGFloat.init(_:)) ?? CGFloat( (hex8 & 0x000000FF) >> 0 ) / 255.0)
     }
 
     /**
@@ -78,7 +78,7 @@ public extension SWColor {
             hex = String(hex[hex.index(after: hex.startIndex)...])
         }
 
-        guard let hexVal = Int(hex, radix: 16) else {
+        guard let hexVal = Int64(hex, radix: 16) else {
             self.init()
             return nil
         }
@@ -111,7 +111,7 @@ public extension SWColor {
      */
     convenience init?(hex: Int, alpha: Float = 1.0) {
         if (0x000000 ... 0xFFFFFF) ~= hex {
-            self.init(hex6: hex, alpha: alpha)
+            self.init(hex6: Int64(hex), alpha: alpha)
         } else {
             self.init()
             return nil
inket

comment created time in 2 months

Pull request review commentthii/SwiftHEXColors

Added support for 8-digit and 4-digit hex colors

 private extension Int {  /// An extension of UIColor (on iOS) or NSColor (on OSX) providing HEX color handling. public extension SWColor {-    /**-     Create non-autoreleased color with in the given hex string. Alpha will be set as 1 by default.--     - parameter hexString: The hex string, with or without the hash character.-     - returns: A color with the given hex string.-     */-    convenience init?(hexString: String) {-        self.init(hexString: hexString, alpha: 1.0)-    }-     private convenience init?(hex3: Int, alpha: Float) {         self.init(red:   CGFloat( ((hex3 & 0xF00) >> 8).duplicate4bits() ) / 255.0,                   green: CGFloat( ((hex3 & 0x0F0) >> 4).duplicate4bits() ) / 255.0,                   blue:  CGFloat( ((hex3 & 0x00F) >> 0).duplicate4bits() ) / 255.0,                   alpha: CGFloat(alpha))     } +    private convenience init?(hex4: Int, alpha: Float?) {+        self.init(red:   CGFloat( ((hex4 & 0xF000) >> 12).duplicate4bits() ) / 255.0,+                  green: CGFloat( ((hex4 & 0x0F00) >> 8).duplicate4bits() ) / 255.0,+                  blue:  CGFloat( ((hex4 & 0x00F0) >> 4).duplicate4bits() ) / 255.0,+                  alpha: alpha.map(CGFloat.init) ?? CGFloat( ((hex4 & 0x000F) >> 0).duplicate4bits() ) / 255.0)

It seems alpha.map(CGFloat.init) should be changed to alpha.map(CGFloat.init(_:)).

But there's another error in this line:

// SwiftHEXColors.swift:60:43: Integer literal '4278190080' overflows when stored into 'Int'
self.init(red:   CGFloat( (hex8 & 0xFF000000) >> 24 ) / 255.0,
inket

comment created time in 2 months

pull request commentthii/SwiftHEXColors

Added support for 8-digit and 4-digit hex colors

Not bad! #StayHome lol

inket

comment created time in 2 months

PR opened thii/SwiftHEXColors

Added support for 8-digit and 4-digit hex colors

Hi @thii! Long time no see, I hope you're doing well during this crisis.

I'm working on something using your library and I realized that I needed support for 8-digit and 4-digit hex colors, so I went ahead and added that in. I figured I would make a PR in case it's useful to the project. If it's the direction you want to take the project in, feel free to merge and adjust this PR to your liking.

Spec: https://drafts.csswg.org/css-color/#hex-notation Browser support: https://caniuse.com/#feat=css-rrggbbaa Examples: https://css-tricks.com/8-digit-hex-codes/

Since the alpha is provided in the hex value, there is no need for the alpha parameter. However, to keep API compatibility, if the user provides the alpha parameter it will take precedence over the hex value. I added the tests to make sure of that.

+44 -27

0 comment

2 changed files

pr created time in 2 months

push eventinket/SwiftHEXColors

Mahdi Bchetnia

commit sha e705bf21676c2b77d3fb12bcc40771e9800a84c7

Added support for 8-digit and 4-digit hex colors Spec: https://drafts.csswg.org/css-color/#hex-notation Browser support: https://caniuse.com/#feat=css-rrggbbaa Examples: https://css-tricks.com/8-digit-hex-codes/ Since the alpha is provided in the hex value, there is no need for the alpha parameter. However, to keep API compatibility, if the user provides the alpha parameter it will take precedence over the hex value. I added the tests to make sure of that.

view details

push time in 2 months

fork inket/SwiftHEXColors

HEX color handling as an extension for UIColor.

fork in 2 months

startedTouchwonders/xcode-theme

started time in 2 months

issue commentinket/MacSymbolicator

Add support for spin dumps

Hi! Thank you for the details.

I played a bit with spindumps and I found that the spindump command will actually allow you to symbolicate spindumps! - provided the file includes the binary format. I'd rather use that as a first-choice to symbolicate than atos since it seems to recognize system libraries by itself.

Currently the app is built with the assumption that a crash file will have one UUID but in the case of a spindump file it might have many UUIDs. I'm thinking I will have to change the logic to do this:

  • Accept any file (.txt or .crash)
  • Check for UUIDs in that file:
    • If one:
      • Search for DSYM using that UUID
      • Use spindump -i file.txt -dsym <dsym> which will symbolicate it if it's a spindump with a binary format
      • Use atos to symbolicate the remaining symbols
    • If many (spindumps without -onlyTarget):
      • Ask user to provide the DSYM manually
      • Use spindump -i file.txt -dsym <dsym> which will symbolicate it if it's a spindump with a binary format
      • Use atos to symbolicate the remaining symbols matching the DSYM UUIDs

An additional improvement to the app's logic to make it recognize the binary images in the crash reports and spin dumps would also allow for:

  • Symbolicating only the necessary symbols without needing to filter addresses starting with 0xff/0x7f
  • Avoiding scanning for "Architecture" since we can get it from the DSYM file using dwarfdump

Thanks for the help. This will be a lot of work but it's worth it! I will probably have it released before the end of April so stay tuned.

DarkDust

comment created time in 2 months

issue commentinket/stts

Feature: UI to add 'user specific' status check

Thank you for the suggestion! I have thought about this and I think it would take a considerable amount of time to implement such a feature. Though I definitely plan to add it in the future.

Are you interested in checking that your intranet is returning "200 OK" or is it using one of the cloud status providers like statuspage?

For now I would say it's easier to add the service and build the app yourself. If you need to check that your intranet is returning 200 it should be as simple as this:

// file: stts/Services/MyIntranet.swift
// make sure it's added to the project file via Xcode
// running the app will automatically add "My Local Intranet" to the services list

import Foundation

class MyIntranet: Service {
    let name = "My Local Intranet"
    let url = URL(string: "https://example.com")!

    override func updateStatus(callback: @escaping (BaseService) -> Void) {
        loadData(with: url) { [weak self] data, resp, error in
            guard let strongSelf = self else { return }

            if let response = resp as? HTTPURLResponse, response.statusCode == 200 {
                self?.status = .good
                self?.message = "Intranet up"
            } else {
                self?.status = .major
                self?.message = "Intranet down"
            }

            callback(strongSelf)
        }
    }
}
fabdrol

comment created time in 3 months

push eventinket/stts

Mahdi Bchetnia

commit sha 2e766b5c049efde19566c94f96be8ce388e4f691

Updated MBPopup

view details

Mahdi Bchetnia

commit sha bfc0899691ba532ddb6db8aa19e685489052e200

Bump version to 1.16 (41)

view details

push time in 3 months

created taginket/stts

tagv1.16

A simple macOS app for monitoring the status of cloud services

created time in 3 months

issue commentinket/MBPopup

How to prevent popup opening when holding option key?

See https://github.com/inket/MBPopup/commit/7f8d6f31f411e8fb1c26c90ffe526fea3a01fc3c for usage!

secit-pl

comment created time in 3 months

push eventinket/MBPopup

Mahdi Bchetnia

commit sha 8de04cbdab16ce1dd49ebce11671a063ea1451cf

Open popup when other modifiers are pressed in addition to command Just like system status items

view details

Mahdi Bchetnia

commit sha 7f8d6f31f411e8fb1c26c90ffe526fea3a01fc3c

Allow control over whether the popup should open or not, closes #4

view details

Mahdi Bchetnia

commit sha 3077aa29cbd7971f9fb5d2c4bfc67fa2c7c6c989

Bump version to 5.0.3 - Open popup when other modifiers are pressed in addition to command - Allow control over whether the popup should open or not, closes #4

view details

push time in 3 months

issue closedinket/MBPopup

How to prevent popup opening when holding option key?

Is there a possibility to prevent popup opening if the menu bar icon was clicked while holding option key? I have found the way how to detect if the option key was used but I cannot prevent popup from being opened.

popupController.willOpenPopup = {
    keys in debugPrint("Will open popup!")
    
    if (keys == .option) {
        self.popupController.close() // doesn't work
    }
}

closed time in 3 months

secit-pl

created taginket/MBPopup

tag5.0.3

macOS status bar popups done right 😎

created time in 3 months

push eventinket/stts

Mahdi Bchetnia

commit sha 26630172a3a0b8cfe427bd763e65b7e34daae0f5

Bump version to 1.15 (40)

view details

Mahdi Bchetnia

commit sha aad08663874653fb1d0aa18feb20732927ae3ea3

Added service: Zoom, closes #98

view details

Mahdi Bchetnia

commit sha 2ab3c5711c587e813f75728355790591bd38a876

Added special handling for Cloudflare

view details

Mahdi Bchetnia

commit sha 6414cf4e4efdcf69a6f939ba1e32b5e1a2d2855d

Retrieve cause of 'down' status and display it (for statuspage services only) - Retrieve status, incidents, components from summary API instead of simply the status from the status API - Decode that using Codable - Derive the status message from the unresolved incidents or the 'down' components - Use autolayout to make the table rows auto-sizing to allow for multi-line status messages

view details

Mahdi Bchetnia

commit sha 47675ccc04dee28e8b8f474e5a227215c59de862

Added service: PlayStation Network, closes #97

view details

Mahdi Bchetnia

commit sha 29a38fac8200fb1006fe1afa3ae992e961ec2f64

Wait slightly longer for tests

view details

Mahdi Bchetnia

commit sha 4d31edf744c11870b5797bbfb8e08db516c67e3f

Updated generated Google services

view details

Mahdi Bchetnia

commit sha b5c2efbcee8bc5b5a7ff9e4db89a7d3ff97974e2

Better message for affected components, and use the same sorting as web

view details

Mahdi Bchetnia

commit sha fe4cfe9ab002fdd2e19427d5d425c1520c7311bb

Fixed accidental fatalError when self is nil

view details

push time in 3 months

created taginket/stts

tagv1.15

A simple macOS app for monitoring the status of cloud services

created time in 3 months

issue closedinket/stts

Add PSN

PlayStation Network is notorious for being down a lot, would be nice to have support for it:

https://status.playstation.com/

closed time in 3 months

schrodincat

issue closedinket/stts

Add Zoom status

Would like to see Zoom added as a service: https://status.zoom.us

closed time in 3 months

cosmos503

issue commentinket/MBPopup

How to prevent popup opening when holding option key?

I'll have to add a new callback where you can return a bool to decide whether you want it to open or not

secit-pl

comment created time in 3 months

more